75 template <
typename Real>
class TPoint3D;
81 template <
typename Real>
class TLine3D;
82 template <
typename Real>
class TRay3D;
83 template <
typename Real>
class TSegment3D;
89 template <
typename Real>
class TPlane3D;
90 template <
typename Real>
class TTriangle3D;
91 template <
typename Real>
class TRectangle3D;
92 template <
typename Real>
class TDisk3D;
98 template <
typename Real>
class TSphere3D;
99 template <
typename Real>
class TCapsule3D;
100 template <
typename Real>
class TTet3D;
101 template <
typename Real>
class TAlignedBox3D;
102 template <
typename Real>
class TOrientedBox3D;
103 template <
typename Real>
class TCylinder3D;
104 template <
typename Real>
class TCone3D;
107 template<
typename Real>
257 template<
typename Real>
336 template<
typename Real>
396 template<
typename Real>
454 template<
typename Real>
477 template<
typename Real>
515 template<
typename Real>
552 template<
typename Real>
573 template<
typename Real>
597 template<
typename Real>
617 template<
typename Real>
639 template<
typename Real>
675 template<
typename Real>
715 template<
typename Real>
744 template<
typename Real>
840#ifdef PRECISION_FLOAT
Implementation of quaternion.
DYN_FUNC TAlignedBox3D(const Coord3D &p0, const Coord3D &p1)
SquareMatrix< Real, 3 > Matrix3D
DYN_FUNC Real length(unsigned int i) const
Vector< Real, 2 > Coord2D
Vector< Real, 3 > Coord3D
DYN_FUNC bool checkOverlap(const TAlignedBox3D< Real > &abox) const
DYN_FUNC bool intersect(const TAlignedBox3D< Real > &abox, TAlignedBox3D< Real > &interBox) const
DYN_FUNC bool meshInsert(const TTriangle3D< Real > &tri) const
DYN_FUNC TAlignedBox3D(const TAlignedBox3D< Real > &box)
DYN_FUNC TOrientedBox3D< Real > rotate(const Matrix3D &mat)
DYN_FUNC TAlignedBox3D< Real > merge(const TAlignedBox3D< Real > &aabb) const
DYN_FUNC TCapsule3D(const TCapsule3D< Real > &capsule)
DYN_FUNC Real volume() const
DYN_FUNC TSegment3D< Real > centerline() const
Vector< Real, 3 > Coord3D
Vector< Real, 2 > Coord2D
DYN_FUNC TCapsule3D(const Coord3D &v0, const Coord3D &v1, const Real &r)
DYN_FUNC bool isValid() const
DYN_FUNC Coord3D endPoint() const
DYN_FUNC TAlignedBox3D< Real > aabb() const
DYN_FUNC Coord3D startPoint() const
DYN_FUNC TCapsule3D(const Coord3D &c, const Quat< Real > &q, const Real &r, const Real &hl)
DYN_FUNC TCone3D(const TCone3D< Real > &cone)
DYN_FUNC TCone3D(const Coord3D &c, const Real &h, const Real &r, const Quat< Real > &rot=Quat< Real >(), const Coord3D &s=Coord3D(1))
Vector< Real, 3 > Coord3D
DYN_FUNC Real volume() const
DYN_FUNC TCylinder3D(const TCylinder3D< Real > &cylinder)
DYN_FUNC TCylinder3D(const Coord3D &c, const Real &h, const Real &r, const Quat< Real > &rot=Quat< Real >(), const Coord3D &s=Coord3D(1))
Vector< Real, 3 > Coord3D
DYN_FUNC Real volume() const
Vector< Real, 2 > Coord2D
Vector< Real, 3 > Coord3D
DYN_FUNC TDisk3D(const TDisk3D< Real > &circle)
DYN_FUNC TDisk3D(const Coord3D &c, const Coord3D &n, const Real &r)
1D geometric primitives in three-dimensional space
Vector< Real, 2 > Coord2D
DYN_FUNC Real distanceSquared(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TSegment3D< Real > proximity(const TAlignedBox3D< Real > &box) const
DYN_FUNC Real distance(const TAlignedBox3D< Real > &box) const
DYN_FUNC TSegment3D< Real > proximity(const TSegment3D< Real > &segment) const
DYN_FUNC TSegment3D< Real > proximity(const TSphere3D< Real > &sphere) const
DYN_FUNC TLine3D(const TLine3D< Real > &line)
DYN_FUNC Real distance(const TSegment3D< Real > &segment) const
DYN_FUNC int intersect(const TAlignedBox3D< Real > &abox, TSegment3D< Real > &interSeg) const
DYN_FUNC int intersect(const TTet3D< Real > &tet, TSegment3D< Real > &interSeg) const
DYN_FUNC Real distanceSquared(const TLine3D< Real > &line) const
DYN_FUNC Real distanceSquared(const TSegment3D< Real > &segment) const
DYN_FUNC TSegment3D< Real > proximity(const TLine3D< Real > &line) const
DYN_FUNC int intersect(const TOrientedBox3D< Real > &obb, TSegment3D< Real > &interSeg) const
DYN_FUNC Real parameter(const Coord3D &pos) const
DYN_FUNC Real distanceSquared(const TAlignedBox3D< Real > &box) const
compute signed distance to 3D geometric primitives
DYN_FUNC TSegment3D< Real > proximity(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TSegment3D< Real > proximity(const TTriangle3D< Real > &triangle) const
DYN_FUNC int intersect(const TPlane3D< Real > &plane, TPoint3D< Real > &interPt) const
intersection tests
DYN_FUNC int intersect(const TTriangle3D< Real > &triangle, TPoint3D< Real > &interPt) const
DYN_FUNC Real distance(const TOrientedBox3D< Real > &obb) const
DYN_FUNC bool isValid() const
DYN_FUNC TLine3D(const Coord3D &pos, const Coord3D &dir)
DYN_FUNC Real distanceSquared(const TPoint3D< Real > &pt) const
DYN_FUNC TSegment3D< Real > proximity(const TRectangle3D< Real > &rectangle) const
DYN_FUNC Real distanceSquared(const TRay3D< Real > &ray) const
DYN_FUNC int intersect(const TSphere3D< Real > &sphere, TSegment3D< Real > &interSeg) const
DYN_FUNC TSegment3D< Real > proximity(const TRay3D< Real > &ray) const
Vector< Real, 3 > Coord3D
DYN_FUNC Real distance(const TLine3D< Real > &line) const
DYN_FUNC Real distance(const TPoint3D< Real > &pt) const
DYN_FUNC Real distance(const TRay3D< Real > &ray) const
DYN_FUNC TOrientedBox3D()
Vector< Real, 2 > Coord2D
DYN_FUNC TOrientedBox3D(const Coord3D c, const Coord3D u_t, const Coord3D v_t, const Coord3D w_t, const Coord3D ext)
construct an oriented bounding box, gurantee u_t, v_t and w_t are unit vectors and form right-handed ...
DYN_FUNC TPoint3D< Real > vertex(const int i) const
DYN_FUNC TOrientedBox3D(const Coord3D c, const Quat< Real > rot, const Coord3D ext)
DYN_FUNC TSegment3D< Real > edge(const int i) const
DYN_FUNC TOrientedBox3D(const TOrientedBox3D< Real > &obb)
Vector< Real, 3 > Coord3D
DYN_FUNC TRectangle3D< Real > face(const int i) const
DYN_FUNC bool point_intersect(const TTriangle3D< Real > &TRI, Coord3D &interNorm, Real &interDist, Coord3D &p1, Coord3D &p2) const
SquareMatrix< Real, 3 > Matrix3D
DYN_FUNC bool point_intersect(const TOrientedBox3D< Real > &OBB, Coord3D &interNorm, Real &interDist, Coord3D &p1, Coord3D &p2) const
DYN_FUNC TOrientedBox3D< Real > rotate(const Matrix3D &mat)
DYN_FUNC TAlignedBox3D< Real > aabb()
DYN_FUNC bool point_intersect(const TTet3D< Real > &TET, Coord3D &interNorm, Real &interDist, Coord3D &p1, Coord3D &p2) const
2D geometric primitives in three-dimensional space
DYN_FUNC bool isValid() const
Vector< Real, 3 > Coord3D
DYN_FUNC TPlane3D(const TPlane3D &plane)
Vector< Real, 2 > Coord2D
DYN_FUNC TPlane3D(const Coord3D &pos, const Coord3D n)
0D geometric primitive in three-dimensional space
DYN_FUNC TPoint3D< Real > project(const TTet3D< Real > &tet, Bool &bInside) const
DYN_FUNC Real distance(const TRay3D< Real > &ray) const
DYN_FUNC Real distance(const TPlane3D< Real > &plane) const
compute the signed distance to 2D geometric primitives
DYN_FUNC Real distance(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TPoint3D< Real > project(const TRectangle3D< Real > &rectangle) const
DYN_FUNC TPoint3D< Real > project(const TAlignedBox3D< Real > &abox) const
DYN_FUNC Real distanceSquared(const TRay3D< Real > &ray) const
DYN_FUNC bool inside(const TAlignedBox3D< Real > &box) const
DYN_FUNC TPoint3D< Real > project(const TCapsule3D< Real > &capsule, Bool &bInside) const
DYN_FUNC Real distanceSquared(const TDisk3D< Real > &disk) const
DYN_FUNC bool inside(const TRay3D< Real > &ray) const
DYN_FUNC TPoint3D< Real > project(const TDisk3D< Real > &disk) const
DYN_FUNC bool inside(const TDisk3D< Real > &disk) const
DYN_FUNC Real distance(const TSegment3D< Real > &segment) const
DYN_FUNC Real distanceSquared(const TCapsule3D< Real > &capsule) const
DYN_FUNC Real distance(const TAlignedBox3D< Real > &abox) const
DYN_FUNC Real distance(const TCapsule3D< Real > &capsule) const
DYN_FUNC TPoint3D(const Real &val)
DYN_FUNC bool inside(const TTet3D< Real > &tet) const
DYN_FUNC TPoint3D< Real > project(const TSegment3D< Real > &segment) const
DYN_FUNC Real distance(const TSphere3D< Real > &sphere) const
compute signed distance to 3D geometric primitives
DYN_FUNC bool inside(const TSphere3D< Real > &sphere) const
check whether a point strictly lies inside (excluding boundary) a 3D geometric primitive
DYN_FUNC bool inside(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TPoint3D< Real > project(const TTriangle3D< Real > &triangle) const
DYN_FUNC TPoint3D< Real > project(const TTet3D< Real > &tet) const
DYN_FUNC Real distanceSquared(const TAlignedBox3D< Real > &abox) const
DYN_FUNC TPoint3D< Real > project(const TOrientedBox3D< Real > &obb, Bool &bInside) const
DYN_FUNC TPoint3D(const TPoint3D &pt)
DYN_FUNC Real distance(const TDisk3D< Real > &disk) const
DYN_FUNC TPoint3D< Real > project(const TSphere3D< Real > &sphere) const
project a point onto polyhedra components – tetrahedra, spheres and oriented bounding boxes
DYN_FUNC Real distanceSquared(const TLine3D< Real > &line) const
DYN_FUNC Real distanceSquared(const TPoint3D< Real > &pt) const
DYN_FUNC Real distanceSquared(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TPoint3D(const Coord3D &pos)
DYN_FUNC TPoint3D & operator=(const Coord3D &p)
DYN_FUNC TPoint3D< Real > project(const TPlane3D< Real > &plane) const
project a point onto planar components – planes, triangles and disks
DYN_FUNC bool inside(const TTriangle3D< Real > &triangle) const
DYN_FUNC Real distanceSquared(const TTriangle3D< Real > &triangle) const
DYN_FUNC Real distance(const TTriangle3D< Real > &triangle) const
DYN_FUNC Real distanceSquared(const TSphere3D< Real > &sphere) const
return squared distance from a point to 3D geometric primitives
Vector< Real, 2 > Coord2D
DYN_FUNC Real distanceSquared(const TPlane3D< Real > &plane) const
return squared distance from a point to 3D geometric primitives
DYN_FUNC Real distanceSquared(const TTet3D< Real > &tet) const
DYN_FUNC TPoint3D< Real > project(const TTet3D< Real > &tet, Bool &bInside, int *idx) const
DYN_FUNC Real distance(const TLine3D< Real > &line) const
DYN_FUNC bool inside(const TCapsule3D< Real > &capsule) const
DYN_FUNC Real distanceSquared(const TSegment3D< Real > &segment) const
DYN_FUNC TPoint3D< Real > project(const TSphere3D< Real > &sphere, Bool &bInside) const
DYN_FUNC TPoint3D< Real > project(const TLine3D< Real > &line) const
project a point onto linear components – lines, rays and segments
DYN_FUNC TPoint3D< Real > project(const TCapsule3D< Real > &capsule) const
DYN_FUNC bool inside(const TPlane3D< Real > &plane) const
check whether a point strictly lies inside (excluding boundary) a 2D geometric primitive
DYN_FUNC bool inside(const TRectangle3D< Real > &rectangle) const
DYN_FUNC const TSegment3D< Real > operator-(const TPoint3D< Real > &pt) const
DYN_FUNC TPoint3D< Real > project(const TAlignedBox3D< Real > &abox, Bool &bInside) const
DYN_FUNC Real distance(const TTet3D< Real > &tet) const
DYN_FUNC bool inside(const TLine3D< Real > &line) const
check whether a point strictly lies inside (excluding boundary) a 1D geometric primitive
DYN_FUNC Real distanceSquared(const TRectangle3D< Real > &rectangle) const
DYN_FUNC Real distance(const TPoint3D< Real > &pt) const
DYN_FUNC TPoint3D(const Real &c0, const Real &c1, const Real &c2)
DYN_FUNC bool inside(const TSegment3D< Real > &segment) const
Vector< Real, 3 > Coord3D
DYN_FUNC TPoint3D< Real > project(const TOrientedBox3D< Real > &obb) const
DYN_FUNC Real distance(const TRectangle3D< Real > &rectangle) const
DYN_FUNC TPoint3D< Real > project(const TRay3D< Real > &ray) const
DYN_FUNC Real distanceSquared(const TPoint3D< Real > &pt) const
DYN_FUNC int intersect(const TSphere3D< Real > &sphere, TSegment3D< Real > &interSeg) const
DYN_FUNC int intersect(const TOrientedBox3D< Real > &obb, TSegment3D< Real > &interSeg) const
DYN_FUNC Real parameter(const Coord3D &pos) const
DYN_FUNC Real distanceSquared(const TTriangle3D< Real > &triangle) const
DYN_FUNC bool isValid() const
DYN_FUNC TSegment3D< Real > proximity(const TSegment3D< Real > &segment) const
Vector< Real, 2 > Coord2D
DYN_FUNC TSegment3D< Real > proximity(const TOrientedBox3D< Real > &obb) const
DYN_FUNC int intersect(const TPlane3D< Real > &plane, TPoint3D< Real > &interPt) const
DYN_FUNC TSegment3D< Real > proximity(const TTriangle3D< Real > &triangle) const
DYN_FUNC TSegment3D< Real > proximity(const TAlignedBox3D< Real > &box) const
DYN_FUNC int intersect(const TAlignedBox3D< Real > &abox, TSegment3D< Real > &interSeg) const
Vector< Real, 3 > Coord3D
DYN_FUNC TSegment3D< Real > proximity(const TRay3D< Real > &ray) const
DYN_FUNC Real distance(const TTriangle3D< Real > &triangle) const
DYN_FUNC TRay3D(const Coord3D &pos, const Coord3D &dir)
DYN_FUNC int intersect(const TTriangle3D< Real > &triangle, TPoint3D< Real > &interPt) const
DYN_FUNC Real distanceSquared(const TSegment3D< Real > &segment) const
DYN_FUNC Real distance(const TPoint3D< Real > &pt) const
DYN_FUNC Real distance(const TSegment3D< Real > &segment) const
DYN_FUNC TSegment3D< Real > proximity(const TRectangle3D< Real > &rectangle) const
DYN_FUNC TRay3D(const TRay3D< Real > &ray)
Vector< Real, 2 > Coord2D
DYN_FUNC TPoint3D< Real > vertex(const int i) const
DYN_FUNC bool computeParams(const Coord3D &p, Param &par) const
Vector< Real, 3 > Coord3D
DYN_FUNC TRectangle3D(const TRectangle3D< Real > &rectangle)
DYN_FUNC TSegment3D< Real > edge(const int i) const
DYN_FUNC TRectangle3D(const Coord3D &c, const Coord3D &a0, const Coord3D &a1, const Coord2D &ext)
DYN_FUNC Coord3D normal() const
DYN_FUNC Real area() const
DYN_FUNC bool isValid() const
DYN_FUNC Real distance(const TSegment3D< Real > &segment) const
DYN_FUNC Coord3D & endPoint()
DYN_FUNC TSegment3D< Real > operator-(void) const
DYN_FUNC Real parameter(const Coord3D &pos) const
DYN_FUNC TSegment3D< Real > proximity(const TRectangle3D< Real > &rectangle) const
DYN_FUNC TSegment3D(const Coord3D &p0, const Coord3D &p1)
DYN_FUNC Real lengthSquared() const
DYN_FUNC int intersect(const TSphere3D< Real > &sphere, TSegment3D< Real > &interSeg) const
DYN_FUNC bool intersect(const TTriangle3D< Real > &triangle, TPoint3D< Real > &interPt) const
DYN_FUNC Coord3D direction() const
DYN_FUNC int intersect(const TAlignedBox3D< Real > &abox, TSegment3D< Real > &interSeg) const
DYN_FUNC TSegment3D< Real > proximity(const TTriangle3D< Real > &triangle) const
DYN_FUNC int intersect(const TOrientedBox3D< Real > &obb, TSegment3D< Real > &interSeg) const
Vector< Real, 2 > Coord2D
DYN_FUNC Real distance(const TTriangle3D< Real > &triangle) const
DYN_FUNC TSegment3D< Real > proximity(const TOrientedBox3D< Real > &obb) const
DYN_FUNC TSegment3D< Real > proximity(const TPlane3D< Real > &plane) const
DYN_FUNC Coord3D startPoint() const
DYN_FUNC TSegment3D< Real > proximity(const TSegment3D< Real > &segment) const
DYN_FUNC TSegment3D< Real > proximity(const TTet3D< Real > &tet) const
DYN_FUNC Coord3D endPoint() const
DYN_FUNC TSegment3D(const TSegment3D< Real > &segment)
DYN_FUNC Real distanceSquared(const TTriangle3D< Real > &triangle) const
DYN_FUNC bool isValid() const
DYN_FUNC Real length() const
Vector< Real, 3 > Coord3D
DYN_FUNC TSegment3D< Real > proximity(const TAlignedBox3D< Real > &box) const
DYN_FUNC bool intersect(const TPlane3D< Real > &plane, TPoint3D< Real > &interPt) const
DYN_FUNC Coord3D & startPoint()
DYN_FUNC Real distanceSquared(const TSegment3D< Real > &segment) const
3D geometric primitives in three-dimensional space
DYN_FUNC TSphere3D(const Coord3D &c, const Real &r)
Vector< Real, 3 > Coord3D
DYN_FUNC TAlignedBox3D< Real > aabb()
DYN_FUNC TSphere3D(const TSphere3D< Real > &sphere)
Vector< Real, 2 > Coord2D
DYN_FUNC TSphere3D(const Coord3D &c, const Quat< Real > &rot, const Real &r)
vertices are ordered so that the normal vectors for the triangular faces point outwards 3 / | \ 0 - 2...
DYN_FUNC TPoint3D< Real > circumcenter() const
DYN_FUNC bool contain(Coord3D p)
DYN_FUNC TPoint3D< Real > barycenter() const
Vector< Real, 3 > Coord3D
DYN_FUNC TTet3D(const TTet3D< Real > &tet)
SquareMatrix< Real, 3 > Matrix3D
DYN_FUNC bool isValid() const
DYN_FUNC TSegment3D< Real > edge(const int index) const
DYN_FUNC bool intersect(const TTet3D< Real > &tet, Coord3D &interNorm, Real &interDist, Coord3D &p1, Coord3D &p2, int need_distance=1) const
DYN_FUNC TAlignedBox3D< Real > aabb()
DYN_FUNC TTet3D(const Coord3D &v0, const Coord3D &v1, const Coord3D &v2, const Coord3D &v3)
Vector< Real, 2 > Coord2D
DYN_FUNC Vector< Real, 4 > computeBarycentricCoordinates(const Coord3D &p)
DYN_FUNC void expand(Real r)
DYN_FUNC bool intersect(const TTriangle3D< Real > &tri, Coord3D &interNorm, Real &interDist, Coord3D &p1, Coord3D &p2, int need_distance=1) const
DYN_FUNC TTriangle3D< Real > face(const int index) const
DYN_FUNC Real solidAngle(const int index) const
DYN_FUNC Real volume() const
Vector< Real, 2 > Coord2D
DYN_FUNC TTriangle3D(const Coord3D &p0, const Coord3D &p1, const Coord3D &p2)
DYN_FUNC Real distance(const TTriangle3D< Real > &triangle) const
DYN_FUNC TAlignedBox3D< Real > aabb()
DYN_FUNC Coord3D computeLocation(const Param &bary) const
Vector< Real, 3 > Coord3D
DYN_FUNC bool isValid() const
DYN_FUNC Real maximumEdgeLength() const
DYN_FUNC bool computeBarycentrics(const Coord3D &p, Param &bary) const
DYN_FUNC TTriangle3D(const TTriangle3D &triangle)
DYN_FUNC Real area() const
DYN_FUNC Real distanceSquared(const TTriangle3D< Real > &triangle) const
DYN_FUNC Coord3D normal() const
This is an implementation of AdditiveCCD based on peridyno.
TAlignedBox3D< double > AlignedBox3D
TCylinder3D< double > Cylinder3D
TRectangle3D< double > Rectangle3D
TTriangle3D< double > Triangle3D
TOrientedBox3D< double > OrientedBox3D
TCapsule3D< double > Capsule3D
TPoint3D< double > Point3D
TSphere3D< double > Sphere3D
TPlane3D< double > Plane3D
TSegment3D< double > Segment3D