24#ifndef __ODGIINTERSECTIONSCALCULATOR__
25#define __ODGIINTERSECTIONSCALCULATOR__
51 bool m_bIsPlaneCalculated;
103 inline void calculatePlaneParameters();
OdGiExtentsSpaceTree< 3, 5, 20, OdGeExtents3d, OdGePoint3d, OdGiTriangleForIntersectTest > OdGiExtents3dSpaceTree_Gi
OdVector< OdGiTriangleForIntersectTest, OdMemoryAllocator< OdGiTriangleForIntersectTest > > OdGiIntersectTrianglesVector
OdGiExtentsSpaceNode< OdGeExtents3d, OdGiTriangleForIntersectTest > OdGiExtents3dSpaceNode_Gi
#define SETBIT(flags, bit, value)
#define GETBIT(flags, bit)
@ kOption_IntersectionOnly
virtual void finalizeCalculations()
OdArray< OdGiEdgeForIntersectTest * > * intersectionEdges()
OdList< OdGiExtents3dSpaceChainPolyline * > & finalIntersectionPathes()
bool collideTriangles(OdUInt64 idObjA, OdUInt64 trIdA, OdUInt64 idObjB, OdUInt64 trIdB, OdUInt64 idObjTested, const OdGeTol &tol)
void setIntersectionsOnly(bool b)
void clearContainersToBeTested()
OdUInt32 checkPointsPlacement(const OdGeVector3d *pPlaneNormalA, double D_A, const OdGePoint3d *pPointsTriangleB, const OdGeTol &tol)
virtual bool notifyObjectPlacedAtNode(OdGiTriangleForIntersectTest *pTriang, int objectType, OdGiExtents3dSpaceNode_Gi *pNode)
double getClearance() const
void processPathCalculation(OdUInt64 idObjTested)
void computeIntersections(OdInt64 containerID, const OdGeExtents3d &extents)
void removeEdgeInfo(OdInt64 objID)
bool getCalcDistance() const
bool getCollisionDistance(OdInt64 collisionIndex, double &result) const
bool isIntersectionsOnly() const
OdVector< DetectedCollision, OdMemoryAllocator< DetectedCollision > > m_vectCollidedContainers
void detectCollisions(OdInt64 containerID, const OdGeExtents3d &extents)
virtual ~OdGiCollisionDetector()
DetectedCollision * m_vectCollidedContainersAsPtr
void setClearance(double cl)
void setCalcDistance(bool b)
OdArray< OdGiExtents3dSpacePoint * > * intersectionVertices()
void getCollisions(OdList< OdInt64 > &result)
OdGiEdgeForIntersectTest(OdGiExtents3dSpacePoint &pt1, OdGiExtents3dSpacePoint &pt2, OdInt64 uniqueID)
OdList< OdGiExtents3dSpaceChainPolyline * > m_finalIntersectPathes
virtual ~OdGiIntersectionsCalculator()
bool m_bSecondObjectProcessedInTree
const OdGeTol & tolerance() const
void intersectTriangles(OdUInt64 idObjA, OdUInt64 trIdA, OdUInt64 idObjB, OdUInt64 trIdB, OdUInt64 idObjTested, const OdGeTol &tol)
OdArray< OdGiExtents3dSpacePoint * > * m_intersectVertices
virtual bool notifyObjectPlacedAtNode(OdGiTriangleForIntersectTest *pTriang, int objectType, OdGiExtents3dSpaceNode_Gi *pNode)
void removeEdgeInfo(OdInt64 objID)
void intermediatefinalizeCalculations()
OdUInt64Vector m_vectTestTriangles_objBoundary
OdInt64 addTriangleToContainer(OdInt64 containerID, const OdGePoint3d *pTriangle)
OdGiExtents3dSpaceTree_Gi m_spaceTriangTree
OdArray< OdGiEdgeForIntersectTest * > * m_intersectEdges
OdVector< bool, OdMemoryAllocator< bool > > m_vectTestedTriangles
bool getSpaceTreeRootExtents(OdGeExtents3d &ext)
OdUInt32 containerToBeTestedSize() const
OdGiExtents3dSpaceTree m_spaceVertexTree
OdInt64 addContainerToBeTested(OdInt64 containerID)
virtual void finalizeCalculations()
OdUInt32 triangleContainerSize() const
OdArray< OdGiEdgeForIntersectTest * > * intersectionEdges()
OdArray< OdGiExtents3dSpacePoint * > * intersectionVertices()
void computeIntersections(OdInt64 containerID, const OdGeExtents3d &extents)
OdInt64 appendTriangleContainer(OdGiIntersectTrianglesVector *pContainer)
OdList< OdGiExtents3dSpaceChainPolyline * > & finalIntersectionPathes()
void setTolerance(const OdGeTol &tol)
void processTrianglesIntoSpaceTree(OdInt64 objID, bool bOtherObjectsProcessed)
OdGiIntersectionsCalculator()
OdVector< OdGiIntersectTrianglesVector * > m_containerTriangles
virtual void initializeCalculations(OdGeExtents3d &ext, OdInt64 nObjects)
OdUInt64Vector m_vectToBeTestedObjects
void processPathCalculation(OdUInt64 idObjTested)
bool isEqual(OdGiTriangleForIntersectTest *pObject, const OdGeTol &tol=OdGeContext::gTol) const
bool isInExtents(OdGeExtents2d &extents) const
OdGiTriangleForIntersectTest()
void rewriteExtents(const OdGeExtents3d &extents)
OdGiTriangleForIntersectTest(const OdGePoint3d *points, OdUInt64 uniqueID)
bool isInExtents(OdGeExtents3d &extents) const
void setData(const OdGePoint3d *points, bool bCalcExtents=true)
const OdGeVector3d * getTrianglePlaneNorm()
void setID(OdUInt64 uniqueID)
friend class OdGiCollisionDetectorIntersectionsOnly
static GE_STATIC_EXPORT OdGeTol gTol
DetectedCollision & operator=(bool b)