Functions | |
| float | common::Orient2D (const VEC2 &a, const VEC2 &b, const VEC2 &c) |
| Funkcja wielofunkcyjna. | |
| float | common::Orient3D (const VEC3 &a, const VEC3 &b, const VEC3 &c, const VEC3 &d) |
| Funkcja wielofunkcyjna. | |
| bool | common::PointInCircle (const VEC2 &pt, const VEC2 &circleCenter, float circleRadius) |
| bool | common::PointInTriangle (const VEC2 &p, const VEC2 &a, const VEC2 &b, const VEC2 &c) |
| Zwraca true, jeśli punkt p należy do trójkąta abc. | |
| bool | common::IsQuadConvex (const VEC2 &a, const VEC2 &b, const VEC2 &c, const VEC2 &d) |
| Zwraca true, jeśli podany czworokąt jest wypukły. | |
| bool | common::IsQuadConvex (const VEC3 &a, const VEC3 &b, const VEC3 &c, const VEC3 &d) |
| Zwraca true, jeśli podany czworokąt jest wypukły (nie zdegenerowany, nie wklęsły, nie samoprzecinający się). | |
| float | common::ClosestPointOnLine (const VEC3 &p, const VEC3 &RayOrig, const VEC3 &RayDir) |
| Dany punkt p i promień (RayOrig, RayDir), oblicza parametr t dla punktu na tym promieniu będącego rzutem tego punktu na ten promień. | |
| float | common::ClosestPointSegmentSegment (const VEC3 &Seg1_Beg, const VEC3 &Seg1_End, const VEC3 &Seg2_Beg, const VEC3 &Seg2_End, float &OutSeg1_t, float &OutSeg2_t, VEC3 &OutSeg1_pt, VEC3 &OutSeg2_pt) |
| Oblicza najbliższe sobie punkty na dwóch odcinkach. | |
| float | common::PointToLineDistanceSq (const VEC2 &P, const VEC2 &LineOrig, const VEC2 &LineDir) |
| Zwraca kwadrat odległości punktu od prostej. | |
| float | common::PointToLineDistanceSq (const VEC3 &P, const VEC3 &LineOrig, const VEC3 &LineDir) |
| float | common::PointToSegmentDistanceSq (const VEC2 &p, const VEC2 &segment_p1, const VEC2 &segment_p2) |
| Zwraca kwadrat odległości punktu od odcinka. | |
| float | common::PointToSegmentDistanceSq (const VEC3 &p, const VEC3 &segment_p1, const VEC3 &segment_p2) |
| Zwraca kwadrat odległości punktu od odcinka. | |
| bool | common::PointOnLine (const VEC3 &P, const VEC3 &LineOrig, const VEC3 &LineDir) |
| Zwraca true, jeśli punkt leży na prostej. | |
| float | common::PointToLine (const VEC3 &P, const VEC3 &LineOrig, const VEC3 &LineDir) |
| Zwraca parametr T punktu leżącego na prostej. | |
| bool | common::PointInLineSegment (const VEC3 &P, const VEC3 &SegmentBeg, const VEC3 &SegmentEnd) |
| Zwraca true, jeśli punkt leży na odcinku. | |
| float | common::ClosestPointOnSegment (VEC2 *Out, const VEC2 &p, const VEC2 &p1, const VEC2 &p2) |
| Wyznacza najbliższy punkt leżący na odcinku p1-p2 względem punktu p. | |
| float | common::ClosestPointOnSegment (VEC3 *Out, const VEC3 &p, const VEC3 &p1, const VEC3 &p2) |
| float | common::ClosestPointOnRay (VEC2 *Out, const VEC2 &p, const VEC2 &RayOrig, const VEC2 &RayDir) |
| Wyznacza najbliższy punkt leżący na półprostej względem punktu p. | |
| float | common::ClosestPointOnRay (VEC3 *Out, const VEC3 &p, const VEC3 &RayOrig, const VEC3 &RayDir) |
| void | common::ClosestPointInBox (VEC3 *Out, const BOX &Box, const VEC3 &p) |
| Wyznacza najbliższy punkt wewnątrz prostopadłościanu względem punktu p. | |
| void | common::ClosestPointInObb (VEC3 *OutPoint, const VEC3 &Point, const OBB &Obb) |
| Znajduje punkt OutPoint należący do podanego OBB, najbliższy do punktu Point. | |
| void | common::ClosestPointInRect3d (VEC3 *OutPoint, const VEC3 &Point, const RECT3D &Rect3d) |
| Znajduje punkt OutPoint należący do podanego prostokąta 3D, najbliższy do punktu Point. | |
| void | common::ClosestPointInRect3d (VEC3 *OutPoint, const VEC3 &p, const VEC3 &a, const VEC3 &b, const VEC3 &c) |
| Znajduje punkt OutPoint należący do podanego prostokąta 3D wyznaczonego przez trzy wierzchołki: a, b, c, najbliższy do punktu Point. | |
| void | common::ClosestPointInTriangle (VEC3 *OutPoint, const VEC3 &p, const VEC3 &a, const VEC3 &b, const VEC3 &c) |
| Znajduje punkt OutPoint należący do trójkąta (a, b, c) najbliższy do punktu p. | |
| void | common::ClosestPointInTriangle (VEC2 *out, const VEC2 &pt, const VEC2 &triA, const VEC2 &triB, const VEC2 &triC) |
| void | common::ClosestPointInTetrahedron (VEC3 *OutPoint, const VEC3 &p, const VEC3 &a, const VEC3 &b, const VEC3 &c, const VEC3 &d) |
| Znajduje punkt OutPoint należący do podanego czworościanu wyznaczonego przez wierzchołki: a, b, c, d, najbliższy do punktu p. | |
| float | common::PointToRectDistanceSq (const VEC2 &p, const RECTF &rect) |
| Returns squared distance from point to rectangle. Returns 0 if point inside rectangle. | |
| float | common::PointToRectManhattanDistance (const VEC2 &p, const RECTF &rect) |
| float | common::PointToRectMaxDistance (const VEC2 &p, const RECTF &rect) |
| float | common::PointToBoxDistanceSq (const VEC3 &p, const BOX &box) |
| Kwadrat odległości punktu od prostopadłościanu. | |
| float | common::PointToBoxManhattanDistance (const VEC3 &p, const BOX &box) |
| float | common::PointToBoxMaxDistance (const VEC3 &p, const BOX &box) |
| float | common::RectToRectDistanceSq (const RECTF &rect1, const RECTF &rect2) |
| Returns squared distance between two rectangles. Returns 0 if given rectangles overlap. | |
| float | common::RectToRectManhattanDistance (const RECTF &rect1, const RECTF &rect2) |
| float | common::RectToRectMaxDistance (const RECTF &rect1, const RECTF &rect2) |
| float | common::BoxToBoxDistanceSq (const BOX &box1, const BOX &box2) |
| Returns squared distance between two axis-aligned boxes. Returns 0 if given boxes overlap. | |
| float | common::BoxToBoxManhattanDistance (const BOX &box1, const BOX &box2) |
| float | common::BoxToBoxMaxDistance (const BOX &box1, const BOX &box2) |
| float | common::PointToObbDistanceSq (const VEC3 &Point, const OBB &Obb) |
| Kwadrat odległości punktu od OBB. | |
| bool | common::CircleToRect (const VEC2 &circleCenter, float circleRadius, const RECTF &rect) |
| bool | common::PointInSphere (const VEC3 &p, const VEC3 &SphereCenter, float SphereRadius) |
| Zwraca true, jeśli podany punkt należy do sfery. | |
| float | common::PointToSphereDistance (const VEC3 &p, const VEC3 &SphereCenter, float SphereRadius) |
| Zwraca odległość punktu od powierzchni sfery. | |
| void | common::ClosestPointOnSphere (VEC3 *Out, const VEC3 &SphereCenter, float SphereRadius, const VEC3 &p) |
| Wyznacza najbliższy punkt na powierzchni sfery względem punktu p. | |
| bool | common::PointOnPlane (const VEC3 &p, const PLANE &plane) |
| Zwraca true, jeśli podany punkt należy do płaszczyzny. | |
| void | common::ClosestPointOnPlane (VEC3 *Out, const PLANE &Plane, const VEC3 &p) |
| Wyznacza najbliższy punkt na płaszczyźnie względem punktu p. | |
| bool | common::PointInTriangle (const VEC3 &point, const VEC3 &pa, const VEC3 &pb, const VEC3 &pc) |
| Zwraca true, jeśli punkt należy do trójkąta. | |
| bool | common::PointInFrustum (const VEC3 &p, const FRUSTUM_PLANES &Frustum) |
| Zwraca true, jeśli punkt należy do wnętrza podanego frustuma. | |
| bool | common::PointInFrustum (const VEC3 &p, const FRUSTUM_RADAR &Frustum) |
| bool | common::ClosestPointsOnLines (float *OutT1, float *OutT2, const VEC3 &RayOrig1, const VEC3 &RayDir1, const VEC3 &RayOrig2, const VEC3 &RayDir2) |
| Funkcja wyznacza parametry t1 i t2 dla punktów na dwóch prostych, w których te proste są najbliżej siebie. | |
| bool | common::RayToBox (float *OutT, const VEC3 &RayOrig, const VEC3 &RayDir, const BOX &Box) |
| Kolizja promienia z prostopadłościanem. | |
| bool | common::RayToSphere (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 &SphereCenter, float SphereRadius, float *OutT) |
| Wylicza kolizję promienia ze sferą. | |
| bool | common::RayToPlane (const VEC3 &RayOrig, const VEC3 &RayDir, const PLANE &Plane, float *OutT, float *OutVD) |
| Przecięcie promienia z płaszczyzną. | |
| bool | common::RayToTriangle (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 &p0, const VEC3 &p1, const VEC3 &p2, bool BackfaceCulling, float *OutT) |
| Kolizja promienia z trójkątem. | |
| bool | common::RayToQuad (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 QuadPoints[4], VEC3 *OutPoint=NULL) |
| Kolizja promienia z czworokątem w 3D. | |
| bool | common::RayToFrustum (const VEC3 &RayOrig, const VEC3 &RayDir, const FRUSTUM_PLANES &Frustum, float *t_near, float *t_far) |
| Kolizja promienia z frustumem. | |
| bool | common::RayToCylinder (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 &CylinderBeg, const VEC3 &CylinderEnd, float CylinderRadius, float *OutT) |
| Kolizja promienia z dowolnie zorientowanym cylindrem. | |
| bool | common::PointInConvexPolyhedron (const VEC3 &Point, const PLANE PolyhedronPlanes[], size_t PolyhedronPlaneCount) |
| Czy punkt leży wewnątrz wielościana wypukłego. | |
| bool | common::PointInConvexPolyhedron (const VEC3 &Point, const void *PolyhedronPlanes, size_t PolyhedronPlaneCount, int PolyhedronPlaneStride) |
| bool | common::RayToConvexPolyhedron (const VEC3 &RayOrig, const VEC3 &RayDir, const PLANE PolyhedronPlanes[], size_t PolyhedronPlaneCount, float *OutBegT, float *OutEndT) |
| Kolizja promienia z wielościanem wypukłym. | |
| bool | common::RayToConvexPolyhedron (const VEC3 &RayOrig, const VEC3 &RayDir, const void *PolyhedronPlanes, size_t PolyhedronPlaneCount, int PolyhedronPlaneStride, float *OutBegT, float *OutEndT) |
| bool | common::SphereToBox (const VEC3 &SphereCenter, float SphereRadius, const BOX &Box) |
| Zwraca true jeśli kula koliduje z prostopadłościanem (także jeśli jest w jego środku). | |
| bool | common::SphereToObb (const VEC3 &SphereCenter, float SphereRadius, const OBB &Obb) |
| Zwraca true, jeśli sfera koliduje z prostopadłościanem zorientowanym. | |
| bool | common::SphereToTriangle (const VEC3 &SphereCenter, float SphereRadius, const VEC3 &TriA, const VEC3 &TriB, const VEC3 &TriC) |
| Zwraca true, jeśli sfera koliduje z trójkątem. | |
| bool | common::SphereInBox (const VEC3 &SphereCenter, float SphereRadius, const BOX &Box) |
| Zwraca true, jeśli sfera zawiera się w całości w prostopadłościanie. | |
| bool | common::BoxInSphere (const BOX &Box, const VEC3 &SphereCenter, float SphereRadius) |
| Zwraca true, jeśli prostopadłościan zawiera się w całości w sferze. | |
| int | common::ClassifyBoxToPlane (const PLANE &plane, const BOX &box) |
| Klasyfikuje położenie prostopadłościanu względem płaszczyzny. | |
| int | common::ClassifyObbToPlane (const PLANE &Plane, const OBB &Obb) |
| Klasyfikuje położenie zorientowanego prostopadłościanu OBB względem płaszczyzny. Zwraca -1, 0, 1. | |
| bool | common::PlaneToBox (const PLANE &plane, const BOX &box) |
| Kolizja płaszczyzny z prostopadłościanem. | |
| bool | common::TriangleInBox (const VEC3 &p1, const VEC3 &p2, const VEC3 &p3, const BOX &Box) |
| Zwraca true, jeśli trójkąt zawiera się w prostopadłościanie. | |
| bool | common::TriangleToBox (const VEC3 &TriA, const VEC3 &TriB, const VEC3 &TriC, const BOX &Box) |
| Zwraca true, jeśli trójkąt przecina prostopadłościan lub się w nim zawiera. | |
| bool | common::BoxToFrustum_Fast (const BOX &Box, const FRUSTUM_PLANES &Frustum) |
| Zwraca true, jeśli podany prostopadłościan jest widoczny choć trochę w bryle widzenia. | |
| bool | common::BoxToFrustum (const BOX &Box, const FRUSTUM_PLANES &FrustumPlanes, const FRUSTUM_POINTS *OptFrustumPoints=NULL) |
| Zwraca true, jeśli podany prostopadłościan jest widoczny choć trochę w bryle widzenia. | |
| bool | common::BoxToFrustum (const BOX &Box, const FRUSTUM_RADAR &Frustum) |
| bool | common::BoxInFrustum (const BOX &Box, const FRUSTUM_PLANES &Frustum) |
| Zwraca true, jeśli AABB jest w całości wewnątrz frustuma. | |
| bool | common::SphereToSphere (const VEC3 &Center1, float Radius1, const VEC3 &Center2, float Radius2) |
| Zwraca true jeśli podane dwie sfery kolidują ze sobą. | |
| bool | common::SphereToPlane (const VEC3 &SphereCenter, float SphereRadius, const PLANE &Plane) |
| Zwraca true, jeśli sfera koliduje z płaszczyzną. | |
| int | common::ClassifySphereToPlane (const VEC3 &SphereCenter, float SphereRadius, const PLANE &Plane) |
| Klasyfikuje położenie sfery względem płaszczyzny. | |
| bool | common::CapsuleToPlane (const VEC3 &CapsuleBeg, const VEC3 &CapsuleEnd, float CapsuleRadius, const PLANE &Plane) |
| Kolizja kapsuły (lub sfery poruszającej się od CapsuleBeg do CapsuleEnd) z płaszczyzną. | |
| bool | common::SphereToFrustum_Fast (const VEC3 &SphereCenter, float SphereRadius, const FRUSTUM_PLANES &Frustum) |
| Zwraca true, jeśli sfera koliduje z frustumem. | |
| bool | common::SphereToFrustum (const VEC3 &SphereCenter, float SphereRadius, const FRUSTUM_PLANES &FrustumPlanes, const FRUSTUM_POINTS *OptFrustumPoints=NULL) |
| Zwraca true, jeśli sfera koliduje z frustumem. | |
| bool | common::SphereToFrustum (const VEC3 &SphereCenter, float SphereRadius, const FRUSTUM_RADAR &Frustum) |
| Testuje przecięcie sfery z frustumem. | |
| bool | common::SphereInFrustum (const VEC3 &SphereCenter, float SphereRadius, const FRUSTUM_PLANES &Frustum) |
| Zwraca true, jeśli sfera zawiera się w całości wewnątrz frustuma. | |
| bool | common::Intersect2Planes (const PLANE &Plane1, const PLANE &Plane2, VEC3 *OutLineOrig, VEC3 *OutLineDir) |
| Wylicza kolizję dwóch płaszczyzn zwracając parametry prostej tworzącej ich przecięcie. | |
| bool | common::Intersect3Planes (const PLANE &P1, const PLANE &P2, const PLANE &P3, VEC3 *OutP) |
| Zwraca punkt przecięcia trzech płaszczyzn lub false, jeśli taki punkt nie istnieje. | |
| bool | common::PlaneToTriangle (const PLANE &Plane, const VEC3 &p0, const VEC3 &p1, const VEC3 &p2) |
| Kolizja płaszczyzny z trójkątem. | |
| int | common::ClassifyPlaneToTriangle (const PLANE &Plane, const VEC3 &p0, const VEC3 &p1, const VEC3 &p2) |
| Klasyfikuje położenie trójkąta względem płaszczyzny. | |
| int | common::ClassifyFrustumToPlane (const FRUSTUM_POINTS &Frustum, const PLANE &Plane) |
| Kolizja płaszczyzny z frustumem (klasyfikacja). | |
| bool | common::SegmentToSegment (const VEC2 &Seg1_Beg, const VEC2 &Seg1_End, const VEC2 &Seg2_Beg, const VEC2 &Seg2_End, float *OutSeg1_t=NULL) |
| Zwraca true, jeśli dwa odcinki 2D zachodzą na siebie. | |
| bool | common::TriangleToTriangle (const VEC3 &V0, const VEC3 &V1, const VEC3 &V2, const VEC3 &U0, const VEC3 &U1, const VEC3 &U2) |
| Testuje kolizję dwóch trójkątów 3D. | |
| bool | common::TriangleInFrustum (const VEC3 &t1, const VEC3 &t2, const VEC3 &t3, const FRUSTUM_PLANES &Frustum) |
| Testuje, czy trójkąt leży w całości wewnątrz frustuma. | |
| bool | common::TriangleToFrustum (const VEC3 &t1, const VEC3 &t2, const VEC3 &t3, const PLANE *OptTrianglePlane, const FRUSTUM_PLANES &FrustumPlanes, const FRUSTUM_POINTS *OptFrustumPoints) |
| Testuje kolizję trójkąta z frustumem. | |
| bool | common::FrustumToFrustum (const FRUSTUM_PLANES &Frustum1_Planes, const FRUSTUM_POINTS &Frustum1_Points, const FRUSTUM_PLANES &Frustum2_Planes, const FRUSTUM_POINTS &Frustum2_Points) |
| Testuje kolizję między dwoma frustumami. | |
| bool | common::SphereToCapsule (const VEC3 &SphereCenter, float SphereRadius, const VEC3 &Capsule_Beg, const VEC3 &Capsule_End, float Capsule_Radius) |
| Kolizja sfery z kapsułą. | |
| bool | common::CapsuleToCapsule (const VEC3 &Capsule1_Beg, const VEC3 &Capsule1_End, float Capsule1_Radius, const VEC3 &Capsule2_Beg, const VEC3 &Capsule2_End, float Capsule2_Radius) |
| Kolizja kapsuły z kapsułą. | |
| bool | common::PointInConvexPolygon (const VEC2 &Point, const VEC2 PolygonPoints[], size_t PolygonPointCount) |
| Sprawdza, czy punkt leży wewnątrz wypukłego wielokąta 2D. | |
| bool | common::PointInConvexPolygon (const VEC2 &Point, const void *PolygonPoints, size_t PolygonPointCount, int PolygonPointStride) |
| bool | common::PointInPolygon (const VEC2 &Point, const VEC2 PolygonPoints[], size_t PolygonPointCount) |
| Zwraca true, jeśli podany punkt leży wewnątrz podanego wielokąta (2D). | |
| bool | common::PointInPolygon (const VEC2 &Point, const void *PolygonPoints, size_t PolygonPointCount, int PolygonPointStride) |
| bool | common::RayToConvexPolygon (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 PolygonPoints[], size_t PolygonPointCount, bool BackfaceCulling, float *OutT, VEC3 *OutPoint, const PLANE *PolygonPlane=NULL) |
| Zwraca true, jeśli promień przecina wielokąt wypukły 3D i wtedy przez OutT zwraca parametr dla promienia. | |
| bool | common::RayToConvexPolygon (const VEC3 &RayOrig, const VEC3 &RayDir, const void *PolygonPoints, size_t PolygonPointCount, int PolygonPointStride, bool BackfaceCulling, float *OutT, VEC3 *OutPoint, const PLANE *PolygonPlane=NULL) |
| bool | common::RayToPolygon (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 PolygonPoints[], size_t PolygonPointCount, bool BackfaceCulling, float *OutT, VEC3 *OutPoint, const PLANE *PolygonPlane=NULL) |
| Zwraca true, jeśli promień przecina wielokąt 3D i wtedy przez OutT zwraca parametr dla promienia. | |
| bool | common::RayToPolygon (const VEC3 &RayOrig, const VEC3 &RayDir, const void *PolygonPoints, size_t PolygonPointCount, int PolygonPointStride, bool BackfaceCulling, float *OutT, VEC3 *OutPoint, const PLANE *PolygonPlane=NULL) |
| bool | common::SweptSphereToPlane (const VEC3 &SphereCenter, float SphereRadius, const VEC3 &SphereSweepDir, const PLANE &Plane, float *OutT0, float *OutT1) |
| Liczy kolizję poruszającej się sfery z płaszczyzną. | |
| bool | common::SweptSphereToFrustum (const VEC3 &SphereCenter, float SphereRadius, const VEC3 &SphereSweepDir, const FRUSTUM_PLANES &Frustum) |
| Oblicza kolizję poruszającej się sfery z frustumem. | |
| bool | common::SweptSphereToSphere (const VEC3 &SphereCenter1, float SphereRadius1, const VEC3 &SphereCenter2, float SphereRadius2, const VEC3 &SphereSweepDir1, float *OutT1, float *OutT2) |
| Analityczna kolizja dwóch poruszających się sfer. | |
| bool | common::SweptBoxToBox (const BOX &Box1, const BOX &Box2, const VEC3 &SweepDirBox1, float *OutT1, float *OutT2) |
| Kolizja poruszającego się AABB z drugim AABB. | |
| int | common::RayToCone (const VEC3 &rayOrig, const VEC3 &rayDir, const VEC3 &coneVertex, const VEC3 &coneDirVec, float coneHalfAngle, VEC3 intersections[2]) |
| bool | common::PointInCone (const VEC3 &pt, const VEC3 &coneVertex, const VEC3 &coneDirVec, float coneHalfAngle) |
| bool | common::SegmentIntersectsOrIsContainedInCone (const VEC3 &segmentPoint1, const VEC3 &segmentPoint2, const VEC3 &coneVertex, const VEC3 &coneDirVec, const float coneHalfAngle, VEC3 intersections[2], int &numIntersectionsFound) |
| bool | common::SegmentIntersectsOrIsContainedInCone (const VEC3 &segmentPoint1, const VEC3 &segmentPoint2, const VEC3 &coneVertex, const VEC3 &coneDirVec, const float coneHalfAngle) |
| bool common::BoxInFrustum | ( | const BOX & | Box, | |
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Zwraca true, jeśli AABB jest w całości wewnątrz frustuma.
| bool common::BoxInSphere | ( | const BOX & | Box, | |
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius | |||
| ) |
Zwraca true, jeśli prostopadłościan zawiera się w całości w sferze.
| float common::BoxToBoxDistanceSq | ( | const BOX & | box1, | |
| const BOX & | box2 | |||
| ) |
Returns squared distance between two axis-aligned boxes. Returns 0 if given boxes overlap.
| float common::BoxToBoxManhattanDistance | ( | const BOX & | box1, | |
| const BOX & | box2 | |||
| ) |
| float common::BoxToBoxMaxDistance | ( | const BOX & | box1, | |
| const BOX & | box2 | |||
| ) |
| bool common::BoxToFrustum | ( | const BOX & | Box, | |
| const FRUSTUM_RADAR & | Frustum | |||
| ) |
| bool common::BoxToFrustum | ( | const BOX & | Box, | |
| const FRUSTUM_PLANES & | FrustumPlanes, | |||
| const FRUSTUM_POINTS * | OptFrustumPoints = NULL | |||
| ) |
Zwraca true, jeśli podany prostopadłościan jest widoczny choć trochę w bryle widzenia.
Test dokładny, ale wolniejszy i wymaga też reprezentacji punktowej frustuma.
| [in] | OptFrustumPoints | to parametr opcjonalny - podaj jeśli masz już wyliczony. |
| bool common::BoxToFrustum_Fast | ( | const BOX & | Box, | |
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Zwraca true, jeśli podany prostopadłościan jest widoczny choć trochę w bryle widzenia.
Uwaga! W rzadkich przypadkach może stwierdzić kolizję chociaż jej nie ma.
| bool common::CapsuleToCapsule | ( | const VEC3 & | Capsule1_Beg, | |
| const VEC3 & | Capsule1_End, | |||
| float | Capsule1_Radius, | |||
| const VEC3 & | Capsule2_Beg, | |||
| const VEC3 & | Capsule2_End, | |||
| float | Capsule2_Radius | |||
| ) |
Kolizja kapsuły z kapsułą.
| bool common::CapsuleToPlane | ( | const VEC3 & | CapsuleBeg, | |
| const VEC3 & | CapsuleEnd, | |||
| float | CapsuleRadius, | |||
| const PLANE & | Plane | |||
| ) |
Kolizja kapsuły (lub sfery poruszającej się od CapsuleBeg do CapsuleEnd) z płaszczyzną.
| Plane | Płaszczyzna musi być znormalizowana. |
| bool common::CircleToRect | ( | const VEC2 & | circleCenter, | |
| float | circleRadius, | |||
| const RECTF & | rect | |||
| ) |
| int common::ClassifyBoxToPlane | ( | const PLANE & | plane, | |
| const BOX & | box | |||
| ) |
Klasyfikuje położenie prostopadłościanu względem płaszczyzny.
| plane | Płaszczyzna musi być znormalizowana |
| int common::ClassifyFrustumToPlane | ( | const FRUSTUM_POINTS & | Frustum, | |
| const PLANE & | Plane | |||
| ) |
Kolizja płaszczyzny z frustumem (klasyfikacja).
| int common::ClassifyObbToPlane | ( | const PLANE & | Plane, | |
| const OBB & | Obb | |||
| ) |
Klasyfikuje położenie zorientowanego prostopadłościanu OBB względem płaszczyzny. Zwraca -1, 0, 1.
| int common::ClassifyPlaneToTriangle | ( | const PLANE & | Plane, | |
| const VEC3 & | p0, | |||
| const VEC3 & | p1, | |||
| const VEC3 & | p2 | |||
| ) |
Klasyfikuje położenie trójkąta względem płaszczyzny.
| int common::ClassifySphereToPlane | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const PLANE & | Plane | |||
| ) |
Klasyfikuje położenie sfery względem płaszczyzny.
| void common::ClosestPointInBox | ( | VEC3 * | Out, | |
| const BOX & | Box, | |||
| const VEC3 & | p | |||
| ) |
Wyznacza najbliższy punkt wewnątrz prostopadłościanu względem punktu p.
Jeśli p leży wewnątrz tego prostopadłościanu, zwrócone zostaje dokładnie p.
| void common::ClosestPointInObb | ( | VEC3 * | OutPoint, | |
| const VEC3 & | Point, | |||
| const OBB & | Obb | |||
| ) |
Znajduje punkt OutPoint należący do podanego OBB, najbliższy do punktu Point.
| void common::ClosestPointInRect3d | ( | VEC3 * | OutPoint, | |
| const VEC3 & | p, | |||
| const VEC3 & | a, | |||
| const VEC3 & | b, | |||
| const VEC3 & | c | |||
| ) |
Znajduje punkt OutPoint należący do podanego prostokąta 3D wyznaczonego przez trzy wierzchołki: a, b, c, najbliższy do punktu Point.
| void common::ClosestPointInRect3d | ( | VEC3 * | OutPoint, | |
| const VEC3 & | Point, | |||
| const RECT3D & | Rect3d | |||
| ) |
Znajduje punkt OutPoint należący do podanego prostokąta 3D, najbliższy do punktu Point.
| void common::ClosestPointInTetrahedron | ( | VEC3 * | OutPoint, | |
| const VEC3 & | p, | |||
| const VEC3 & | a, | |||
| const VEC3 & | b, | |||
| const VEC3 & | c, | |||
| const VEC3 & | d | |||
| ) |
Znajduje punkt OutPoint należący do podanego czworościanu wyznaczonego przez wierzchołki: a, b, c, d, najbliższy do punktu p.
| void common::ClosestPointInTriangle | ( | VEC2 * | out, | |
| const VEC2 & | pt, | |||
| const VEC2 & | triA, | |||
| const VEC2 & | triB, | |||
| const VEC2 & | triC | |||
| ) |
Znajduje punkt OutPoint należący do podanego prostokąta 3D wyznaczonego przez trzy wierzchołki: a, b, c, najbliższy do punktu Point.
| void common::ClosestPointInTriangle | ( | VEC3 * | OutPoint, | |
| const VEC3 & | p, | |||
| const VEC3 & | a, | |||
| const VEC3 & | b, | |||
| const VEC3 & | c | |||
| ) |
Znajduje punkt OutPoint należący do trójkąta (a, b, c) najbliższy do punktu p.
| float common::ClosestPointOnLine | ( | const VEC3 & | p, | |
| const VEC3 & | RayOrig, | |||
| const VEC3 & | RayDir | |||
| ) |
Dany punkt p i promień (RayOrig, RayDir), oblicza parametr t dla punktu na tym promieniu będącego rzutem tego punktu na ten promień.
W ten sposób można obliczyć rzut punktu na promień (punkt z promienia najbliższy danemu punktowi) jako RayOrig + RayDir*t. Można też policzyć najbliższy punkt na półprostej lub odcinku limitując najpierw t od 0 do 1 czy od 0 do dlugości odcinka. UWAGA! Jeśli RayDir nie jest jednostkowy, wynik trzeba podzielić przez LengthSq(RayDir).
| void common::ClosestPointOnPlane | ( | VEC3 * | Out, | |
| const PLANE & | Plane, | |||
| const VEC3 & | p | |||
| ) |
Wyznacza najbliższy punkt na płaszczyźnie względem punktu p.
Płaszczyzna musi być znormalizowana.
| float common::ClosestPointOnRay | ( | VEC3 * | Out, | |
| const VEC3 & | p, | |||
| const VEC3 & | RayOrig, | |||
| const VEC3 & | RayDir | |||
| ) |
| float common::ClosestPointOnRay | ( | VEC2 * | Out, | |
| const VEC2 & | p, | |||
| const VEC2 & | RayOrig, | |||
| const VEC2 & | RayDir | |||
| ) |
Wyznacza najbliższy punkt leżący na półprostej względem punktu p.
| Out | [out] Można podać NULL. |
| float common::ClosestPointOnSegment | ( | VEC3 * | Out, | |
| const VEC3 & | p, | |||
| const VEC3 & | p1, | |||
| const VEC3 & | p2 | |||
| ) |
| float common::ClosestPointOnSegment | ( | VEC2 * | Out, | |
| const VEC2 & | p, | |||
| const VEC2 & | p1, | |||
| const VEC2 & | p2 | |||
| ) |
Wyznacza najbliższy punkt leżący na odcinku p1-p2 względem punktu p.
| Out | [out] Można podać NULL. |
| void common::ClosestPointOnSphere | ( | VEC3 * | Out, | |
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius, | |||
| const VEC3 & | p | |||
| ) |
Wyznacza najbliższy punkt na powierzchni sfery względem punktu p.
Punkt może być wewnątrz sfery - też jest OK, zwróci z powierzchni sfery. Punkt nie może być dokładnie na środku sfery - wtedy jest dzielenie przez zero.
| float common::ClosestPointSegmentSegment | ( | const VEC3 & | Seg1_Beg, | |
| const VEC3 & | Seg1_End, | |||
| const VEC3 & | Seg2_Beg, | |||
| const VEC3 & | Seg2_End, | |||
| float & | OutSeg1_t, | |||
| float & | OutSeg2_t, | |||
| VEC3 & | OutSeg1_pt, | |||
| VEC3 & | OutSeg2_pt | |||
| ) |
Oblicza najbliższe sobie punkty na dwóch odcinkach.
Dane są dwa odcinki: Seg1_Beg..Seg1_End i Seg2_Beg..Seg2_End. Funkcja oblicza najbliższe sobie punkty na tych odcinkach. Parametry do tych odcinków zwraca przez OutSeg1_t, OutSeg2_t. Te punkty zwraca przez OutSeg1_pt, OutSeg2_pt. Cała funkcja zwraca kwadrat odległości między tymi punktami.
| bool common::ClosestPointsOnLines | ( | float * | OutT1, | |
| float * | OutT2, | |||
| const VEC3 & | RayOrig1, | |||
| const VEC3 & | RayDir1, | |||
| const VEC3 & | RayOrig2, | |||
| const VEC3 & | RayDir2 | |||
| ) |
Funkcja wyznacza parametry t1 i t2 dla punktów na dwóch prostych, w których te proste są najbliżej siebie.
Dane są dwie proste (RayOrig1, RayDir1) i (RayOrig2, RayDir2). Funkcja wyznacza parametry t1 i t2 dla punktów na tych prostych, w których te proste są najbliżej siebie. Jeśli nie da się takich znaleźć (proste są równoległe), funkcja zwraca false. Te punkty można policzyć ze wzorów p1=RayOrig1+t1*RayDir1 i p2=RayOrig2+t2*RayDir2. Proste faktycznie przecinają się jeśli odległość między tymi punktami wynosi ok. 0.
| bool common::FrustumToFrustum | ( | const FRUSTUM_PLANES & | Frustum1_Planes, | |
| const FRUSTUM_POINTS & | Frustum1_Points, | |||
| const FRUSTUM_PLANES & | Frustum2_Planes, | |||
| const FRUSTUM_POINTS & | Frustum2_Points | |||
| ) |
Testuje kolizję między dwoma frustumami.
| bool common::Intersect2Planes | ( | const PLANE & | Plane1, | |
| const PLANE & | Plane2, | |||
| VEC3 * | OutLineOrig, | |||
| VEC3 * | OutLineDir | |||
| ) |
Wylicza kolizję dwóch płaszczyzn zwracając parametry prostej tworzącej ich przecięcie.
Jesli nie ma kolizji bo płaszczyzny są równoległe, zwraca false. Płaszczyzny muszą być znormalizowane.
| OutLineDir | [out] nie jest znormalizowany. |
| bool common::Intersect3Planes | ( | const PLANE & | P1, | |
| const PLANE & | P2, | |||
| const PLANE & | P3, | |||
| VEC3 * | OutP | |||
| ) |
Zwraca punkt przecięcia trzech płaszczyzn lub false, jeśli taki punkt nie istnieje.
Płaszczyzny muszą być znormalizowane.
| bool common::IsQuadConvex | ( | const VEC3 & | a, | |
| const VEC3 & | b, | |||
| const VEC3 & | c, | |||
| const VEC3 & | d | |||
| ) |
Zwraca true, jeśli podany czworokąt jest wypukły (nie zdegenerowany, nie wklęsły, nie samoprzecinający się).
Wszystkie cztery wierzchołki muszą leżeć w jednej płaszczyźnie.
| bool common::IsQuadConvex | ( | const VEC2 & | a, | |
| const VEC2 & | b, | |||
| const VEC2 & | c, | |||
| const VEC2 & | d | |||
| ) |
Zwraca true, jeśli podany czworokąt jest wypukły.
Nie testowana, może źle działać dla zdegenerowanych - TODO.
| float common::Orient2D | ( | const VEC2 & | a, | |
| const VEC2 & | b, | |||
| const VEC2 & | c | |||
| ) |
Funkcja wielofunkcyjna.
| float common::Orient3D | ( | const VEC3 & | a, | |
| const VEC3 & | b, | |||
| const VEC3 & | c, | |||
| const VEC3 & | d | |||
| ) |
Funkcja wielofunkcyjna.
| bool common::PlaneToBox | ( | const PLANE & | plane, | |
| const BOX & | box | |||
| ) | [inline] |
Kolizja płaszczyzny z prostopadłościanem.
| plane | Płaszczyzna musi być znormalizowana |
| bool common::PlaneToTriangle | ( | const PLANE & | Plane, | |
| const VEC3 & | p0, | |||
| const VEC3 & | p1, | |||
| const VEC3 & | p2 | |||
| ) |
Kolizja płaszczyzny z trójkątem.
| bool common::PointInCircle | ( | const VEC2 & | pt, | |
| const VEC2 & | circleCenter, | |||
| float | circleRadius | |||
| ) | [inline] |
| bool common::PointInCone | ( | const VEC3 & | pt, | |
| const VEC3 & | coneVertex, | |||
| const VEC3 & | coneDirVec, | |||
| float | coneHalfAngle | |||
| ) |
| bool common::PointInConvexPolygon | ( | const VEC2 & | Point, | |
| const void * | PolygonPoints, | |||
| size_t | PolygonPointCount, | |||
| int | PolygonPointStride | |||
| ) |
| bool common::PointInConvexPolygon | ( | const VEC2 & | Point, | |
| const VEC2 | PolygonPoints[], | |||
| size_t | PolygonPointCount | |||
| ) |
Sprawdza, czy punkt leży wewnątrz wypukłego wielokąta 2D.
Wielokąt musi mieć wierzchołki zorientowane CW.
| bool common::PointInConvexPolyhedron | ( | const VEC3 & | Point, | |
| const void * | PolyhedronPlanes, | |||
| size_t | PolyhedronPlaneCount, | |||
| int | PolyhedronPlaneStride | |||
| ) |
| bool common::PointInConvexPolyhedron | ( | const VEC3 & | Point, | |
| const PLANE | PolyhedronPlanes[], | |||
| size_t | PolyhedronPlaneCount | |||
| ) |
Czy punkt leży wewnątrz wielościana wypukłego.
Płaszczyzny wielościanu mają mieć wektory normalne zwrócone do wewnątrz.
| bool common::PointInFrustum | ( | const VEC3 & | p, | |
| const FRUSTUM_RADAR & | Frustum | |||
| ) |
| bool common::PointInFrustum | ( | const VEC3 & | p, | |
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Zwraca true, jeśli punkt należy do wnętrza podanego frustuma.
| bool common::PointInLineSegment | ( | const VEC3 & | P, | |
| const VEC3 & | SegmentBeg, | |||
| const VEC3 & | SegmentEnd | |||
| ) |
Zwraca true, jeśli punkt leży na odcinku.
| P | Punkt musi leżeć na prostej przechodzącej przez ten odcinek! |
| bool common::PointInPolygon | ( | const VEC2 & | Point, | |
| const void * | PolygonPoints, | |||
| size_t | PolygonPointCount, | |||
| int | PolygonPointStride | |||
| ) |
| bool common::PointInPolygon | ( | const VEC2 & | Point, | |
| const VEC2 | PolygonPoints[], | |||
| size_t | PolygonPointCount | |||
| ) |
Zwraca true, jeśli podany punkt leży wewnątrz podanego wielokąta (2D).
Wielokąt może mieć dowolny kształt, także niewypukły, a nawet sam się przecinać. Jego wierzchołki mogą biec w dowolnym kierunku.
| bool common::PointInSphere | ( | const VEC3 & | p, | |
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius | |||
| ) |
Zwraca true, jeśli podany punkt należy do sfery.
| bool common::PointInTriangle | ( | const VEC3 & | point, | |
| const VEC3 & | pa, | |||
| const VEC3 & | pb, | |||
| const VEC3 & | pc | |||
| ) |
Zwraca true, jeśli punkt należy do trójkąta.
| bool common::PointInTriangle | ( | const VEC2 & | p, | |
| const VEC2 & | a, | |||
| const VEC2 & | b, | |||
| const VEC2 & | c | |||
| ) |
Zwraca true, jeśli punkt p należy do trójkąta abc.
| bool common::PointOnLine | ( | const VEC3 & | P, | |
| const VEC3 & | LineOrig, | |||
| const VEC3 & | LineDir | |||
| ) |
Zwraca true, jeśli punkt leży na prostej.
| LineDir | musi być znormalizowane! |
| bool common::PointOnPlane | ( | const VEC3 & | p, | |
| const PLANE & | plane | |||
| ) |
Zwraca true, jeśli podany punkt należy do płaszczyzny.
Płaszczyzna nie musi być znormalizowana.
| float common::PointToBoxDistanceSq | ( | const VEC3 & | p, | |
| const BOX & | box | |||
| ) |
Kwadrat odległości punktu od prostopadłościanu.
Jeśli p leży wewnątrz tego prostopadłościanu, zwraca 0.
| float common::PointToBoxManhattanDistance | ( | const VEC3 & | p, | |
| const BOX & | box | |||
| ) |
| float common::PointToBoxMaxDistance | ( | const VEC3 & | p, | |
| const BOX & | box | |||
| ) |
| float common::PointToLine | ( | const VEC3 & | P, | |
| const VEC3 & | LineOrig, | |||
| const VEC3 & | LineDir | |||
| ) |
Zwraca parametr T punktu leżącego na prostej.
| P | Punkt musi naprawdę leżeć na tej prostej! |
| float common::PointToLineDistanceSq | ( | const VEC3 & | P, | |
| const VEC3 & | LineOrig, | |||
| const VEC3 & | LineDir | |||
| ) |
| float common::PointToLineDistanceSq | ( | const VEC2 & | P, | |
| const VEC2 & | LineOrig, | |||
| const VEC2 & | LineDir | |||
| ) |
Zwraca kwadrat odległości punktu od prostej.
| LineDir | musi być znormalizowane! |
| float common::PointToObbDistanceSq | ( | const VEC3 & | Point, | |
| const OBB & | Obb | |||
| ) |
Kwadrat odległości punktu od OBB.
| float common::PointToRectDistanceSq | ( | const VEC2 & | p, | |
| const RECTF & | rect | |||
| ) |
Returns squared distance from point to rectangle. Returns 0 if point inside rectangle.
| float common::PointToRectManhattanDistance | ( | const VEC2 & | p, | |
| const RECTF & | rect | |||
| ) |
| float common::PointToRectMaxDistance | ( | const VEC2 & | p, | |
| const RECTF & | rect | |||
| ) |
| float common::PointToSegmentDistanceSq | ( | const VEC3 & | p, | |
| const VEC3 & | segment_p1, | |||
| const VEC3 & | segment_p2 | |||
| ) |
Zwraca kwadrat odległości punktu od odcinka.
| float common::PointToSegmentDistanceSq | ( | const VEC2 & | p, | |
| const VEC2 & | segment_p1, | |||
| const VEC2 & | segment_p2 | |||
| ) |
Zwraca kwadrat odległości punktu od odcinka.
| float common::PointToSphereDistance | ( | const VEC3 & | p, | |
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius | |||
| ) |
Zwraca odległość punktu od powierzchni sfery.
Jeśli punkt leży wewnątrz sfery, zwróci odległość ujemną.
| bool common::RayToBox | ( | float * | OutT, | |
| const VEC3 & | RayOrig, | |||
| const VEC3 & | RayDir, | |||
| const BOX & | Box | |||
| ) |
Kolizja promienia z prostopadłościanem.
Jeśli promień nie przecina prostopadłościanu, zwraca false. Jeśli promień przecina prostopadłościan, zwraca true i przez OutT zwraca odległość w wielokrotnościach długości RayDir. Jeśli promień przecina prostopadłościan od tyłu, funkcja też zwraca true i zwraca OutT ujemne. Jeśli RayOrig jest wewnątrz prostopadłościanu, funkcja zwraca true i OutT = 0.
| int common::RayToCone | ( | const VEC3 & | rayOrig, | |
| const VEC3 & | rayDir, | |||
| const VEC3 & | coneVertex, | |||
| const VEC3 & | coneDirVec, | |||
| float | coneHalfAngle, | |||
| VEC3 | intersections[2] | |||
| ) |
| rayDir | Must be normalized. | |
| coneDirVec | Must be normalized. | |
| coneHalfAngle | Must be less than PI_2. |
| bool common::RayToConvexPolygon | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const void * | PolygonPoints, | |||
| size_t | PolygonPointCount, | |||
| int | PolygonPointStride, | |||
| bool | BackfaceCulling, | |||
| float * | OutT, | |||
| VEC3 * | OutPoint, | |||
| const PLANE * | PolygonPlane = NULL | |||
| ) |
| bool common::RayToConvexPolygon | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 | PolygonPoints[], | |||
| size_t | PolygonPointCount, | |||
| bool | BackfaceCulling, | |||
| float * | OutT, | |||
| VEC3 * | OutPoint, | |||
| const PLANE * | PolygonPlane = NULL | |||
| ) |
Zwraca true, jeśli promień przecina wielokąt wypukły 3D i wtedy przez OutT zwraca parametr dla promienia.
Wierzchołki wielokąta muszą leżeć w jednej płaszczyźnie. Jeśli kolizja jest od tyłu początku promienia, zwraca true i OutT ujemne. Uwaga! Stosuje rzutowanie na jedną z głównych płaszczyzn, testowana tylko dla jednej z trzech możliwych. BackfaceCulling może działać źle.
| BackfaceCulling | true oznacza, że promień trafia tylko jeśli wchodzi z jednej strony, z tej z której wierzchołki wielokąta są widoczne jako zorientowane w kierunku CW. | |
| PolygonPlane | Opcjonalny. Podaj, jeśli masz już wyliczony. |
| bool common::RayToConvexPolyhedron | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const void * | PolyhedronPlanes, | |||
| size_t | PolyhedronPlaneCount, | |||
| int | PolyhedronPlaneStride, | |||
| float * | OutBegT, | |||
| float * | OutEndT | |||
| ) |
| bool common::RayToConvexPolyhedron | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const PLANE | PolyhedronPlanes[], | |||
| size_t | PolyhedronPlaneCount, | |||
| float * | OutBegT, | |||
| float * | OutEndT | |||
| ) |
Kolizja promienia z wielościanem wypukłym.
Płaszczyzny wielościanu mają mieć wektory normalne zwrócone do wewnątrz. Ta funkcja testuje tylko kolizję półprostej. Jeśli wielościan jest z tyłu promienia, funkcja zwraca false. T zawsze wychodzą nieujemne.
| bool common::RayToCylinder | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 & | CylinderBeg, | |||
| const VEC3 & | CylinderEnd, | |||
| float | CylinderRadius, | |||
| float * | OutT | |||
| ) |
Kolizja promienia z dowolnie zorientowanym cylindrem.
Jeśli kolizja jest z tyłu, też zwraca true i OutT wychodzi ujemne. Zwraca zawsze ten z dwóch punktów przecięcia który ma mniejsze OutT.
| bool common::RayToFrustum | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const FRUSTUM_PLANES & | Frustum, | |||
| float * | t_near, | |||
| float * | t_far | |||
| ) |
Kolizja promienia z frustumem.
| bool common::RayToPlane | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const PLANE & | Plane, | |||
| float * | OutT, | |||
| float * | OutVD | |||
| ) |
Przecięcie promienia z płaszczyzną.
| [out] | OutT | Zwrócony parametr dla promienia (NIE można podać 0) |
| [out] | OutVD | Zwrócona liczba mówiąca o zwrocie płaszczyzny (NIE można podać 0) OutVD > 0 oznacza, że płaszczyzna jest tyłem do promienia |
| bool common::RayToPolygon | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const void * | PolygonPoints, | |||
| size_t | PolygonPointCount, | |||
| int | PolygonPointStride, | |||
| bool | BackfaceCulling, | |||
| float * | OutT, | |||
| VEC3 * | OutPoint, | |||
| const PLANE * | PolygonPlane = NULL | |||
| ) |
| bool common::RayToPolygon | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 | PolygonPoints[], | |||
| size_t | PolygonPointCount, | |||
| bool | BackfaceCulling, | |||
| float * | OutT, | |||
| VEC3 * | OutPoint, | |||
| const PLANE * | PolygonPlane = NULL | |||
| ) |
Zwraca true, jeśli promień przecina wielokąt 3D i wtedy przez OutT zwraca parametr dla promienia.
Wierzchołki wielokąta muszą leżeć w jednej płaszczyźnie. Wielokąt może być dowolny, nie musi być wypukły. Uwaga! Stosuje rzutowanie na jedną z głównych płaszczyzn, testowana tylko dla jednej z trzech możliwych. BackfaceCulling może działać źle.
| BackfaceCulling | true oznacza, że promień trafia tylko jeśli wchodzi z jednej strony, z tej z której wierzchołki wielokąta są widoczne jako zorientowane w kierunku CW. | |
| PolygonPlane | Opcjonalny. Podaj, jeśli masz już wyliczony. |
| bool common::RayToQuad | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 | QuadPoints[4], | |||
| VEC3 * | OutPoint = NULL | |||
| ) |
Kolizja promienia z czworokątem w 3D.
Czworokąt musi być płaski, wypukły i zorientowany odpowiednio. Kolizja działa tylko w jedną stronę. Dla T ujemnego również zwraca false. Niestety nie zwraca T.
| OutPoint | Parametr opcjonalny. |
| bool common::RayToSphere | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius, | |||
| float * | OutT | |||
| ) |
Wylicza kolizję promienia ze sferą.
Jeśli nie ma kolizji, zwraca false. Jeśli jest kolizja, zwraca true i parametr T. Jeśli kolizja jest z tyłu promienia - wcześniej niż jego początek - zwraca true i T ujemne. Jeśli początek promienia jest wewnątrz sfery, zwraca true i T=0
| bool common::RayToTriangle | ( | const VEC3 & | RayOrig, | |
| const VEC3 & | RayDir, | |||
| const VEC3 & | p0, | |||
| const VEC3 & | p1, | |||
| const VEC3 & | p2, | |||
| bool | BackfaceCulling, | |||
| float * | OutT | |||
| ) |
Kolizja promienia z trójkątem.
| [out] | OutT | Można podać NULL jeśli nie interesuje nas odległość kolizji. |
| BackfaceCulling | Jeśli true, funkcja zawsze uwzględnia wyłącznie kolizję z trójkątem zwróconym w stronę CW (jak w DirectX). |
| float common::RectToRectDistanceSq | ( | const RECTF & | rect1, | |
| const RECTF & | rect2 | |||
| ) |
Returns squared distance between two rectangles. Returns 0 if given rectangles overlap.
| float common::RectToRectManhattanDistance | ( | const RECTF & | rect1, | |
| const RECTF & | rect2 | |||
| ) |
| float common::RectToRectMaxDistance | ( | const RECTF & | rect1, | |
| const RECTF & | rect2 | |||
| ) |
| bool common::SegmentIntersectsOrIsContainedInCone | ( | const VEC3 & | segmentPoint1, | |
| const VEC3 & | segmentPoint2, | |||
| const VEC3 & | coneVertex, | |||
| const VEC3 & | coneDirVec, | |||
| const float | coneHalfAngle | |||
| ) |
| bool common::SegmentIntersectsOrIsContainedInCone | ( | const VEC3 & | segmentPoint1, | |
| const VEC3 & | segmentPoint2, | |||
| const VEC3 & | coneVertex, | |||
| const VEC3 & | coneDirVec, | |||
| const float | coneHalfAngle, | |||
| VEC3 | intersections[2], | |||
| int & | numIntersectionsFound | |||
| ) |
| bool common::SegmentToSegment | ( | const VEC2 & | Seg1_Beg, | |
| const VEC2 & | Seg1_End, | |||
| const VEC2 & | Seg2_Beg, | |||
| const VEC2 & | Seg2_End, | |||
| float * | OutSeg1_t = NULL | |||
| ) |
Zwraca true, jeśli dwa odcinki 2D zachodzą na siebie.
| OutSeg1_t | Parametr opcjonalny. Zwraca parametr 0..1 miejsca przecięcia na odcinku Seg1. |
| bool common::SphereInBox | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const BOX & | Box | |||
| ) |
Zwraca true, jeśli sfera zawiera się w całości w prostopadłościanie.
| bool common::SphereInFrustum | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Zwraca true, jeśli sfera zawiera się w całości wewnątrz frustuma.
| bool common::SphereToBox | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const BOX & | Box | |||
| ) |
Zwraca true jeśli kula koliduje z prostopadłościanem (także jeśli jest w jego środku).
| bool common::SphereToCapsule | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const VEC3 & | Capsule_Beg, | |||
| const VEC3 & | Capsule_End, | |||
| float | Capsule_Radius | |||
| ) |
Kolizja sfery z kapsułą.
| bool common::SphereToFrustum | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const FRUSTUM_RADAR & | Frustum | |||
| ) |
Testuje przecięcie sfery z frustumem.
Uwaga! Wygląda na to, że z nienznaych przyczyn ta funkcja nie zwraca true także dla sfery która nie jest ściśle kolidująca z frustumem, ale z pewnym niewielkim marginesem błędu w kierunku +/- Right.
| bool common::SphereToFrustum | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const FRUSTUM_PLANES & | FrustumPlanes, | |||
| const FRUSTUM_POINTS * | OptFrustumPoints = NULL | |||
| ) |
Zwraca true, jeśli sfera koliduje z frustumem.
Test dokładny, ale wolniejszy i wymaga też reprezentacji punktowej frustuma.
| [in] | OptFrustumPoints | Parametr opcjonalny - podaj jeśli masz już wyliczony. |
| bool common::SphereToFrustum_Fast | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Zwraca true, jeśli sfera koliduje z frustumem.
Uwaga! W rzadkich przypadkach może stwierdzić kolizję chociaż jej nie ma.
| bool common::SphereToObb | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const OBB & | Obb | |||
| ) |
Zwraca true, jeśli sfera koliduje z prostopadłościanem zorientowanym.
| bool common::SphereToPlane | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const PLANE & | Plane | |||
| ) |
Zwraca true, jeśli sfera koliduje z płaszczyzną.
Płaszczyzna musi być znormalizowana.
| bool common::SphereToSphere | ( | const VEC3 & | Center1, | |
| float | Radius1, | |||
| const VEC3 & | Center2, | |||
| float | Radius2 | |||
| ) |
Zwraca true jeśli podane dwie sfery kolidują ze sobą.
| bool common::SphereToTriangle | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const VEC3 & | TriA, | |||
| const VEC3 & | TriB, | |||
| const VEC3 & | TriC | |||
| ) |
Zwraca true, jeśli sfera koliduje z trójkątem.
| bool common::SweptBoxToBox | ( | const BOX & | Box1, | |
| const BOX & | Box2, | |||
| const VEC3 & | SweepDirBox1, | |||
| float * | OutT1, | |||
| float * | OutT2 | |||
| ) |
Kolizja poruszającego się AABB z drugim AABB.
| SweepDirBox1 | Nie musi być znormalizowany. T będzie wyrażone we wielokrotnościach jego długości. |
| bool common::SweptSphereToFrustum | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const VEC3 & | SphereSweepDir, | |||
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Oblicza kolizję poruszającej się sfery z frustumem.
| bool common::SweptSphereToPlane | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const VEC3 & | SphereSweepDir, | |||
| const PLANE & | Plane, | |||
| float * | OutT0, | |||
| float * | OutT1 | |||
| ) |
Liczy kolizję poruszającej się sfery z płaszczyzną.
| bool common::SweptSphereToSphere | ( | const VEC3 & | SphereCenter1, | |
| float | SphereRadius1, | |||
| const VEC3 & | SphereCenter2, | |||
| float | SphereRadius2, | |||
| const VEC3 & | SphereSweepDir1, | |||
| float * | OutT1, | |||
| float * | OutT2 | |||
| ) |
Analityczna kolizja dwóch poruszających się sfer.
| SphereSweepDir1 | Kierunek ruchu sfery 1 w stosunku do sfery 2. Nie musi być znormalizowany. |
| bool common::TriangleInBox | ( | const VEC3 & | p1, | |
| const VEC3 & | p2, | |||
| const VEC3 & | p3, | |||
| const BOX & | Box | |||
| ) |
Zwraca true, jeśli trójkąt zawiera się w prostopadłościanie.
| bool common::TriangleInFrustum | ( | const VEC3 & | t1, | |
| const VEC3 & | t2, | |||
| const VEC3 & | t3, | |||
| const FRUSTUM_PLANES & | Frustum | |||
| ) |
Testuje, czy trójkąt leży w całości wewnątrz frustuma.
| bool common::TriangleToBox | ( | const VEC3 & | TriA, | |
| const VEC3 & | TriB, | |||
| const VEC3 & | TriC, | |||
| const BOX & | Box | |||
| ) |
Zwraca true, jeśli trójkąt przecina prostopadłościan lub się w nim zawiera.
| [in] | OptTrianglePlane | Można podać jeśli się już ma wyliczone, żeby przyspieszyć. Nie musi być znormalizowane. |
| bool common::TriangleToFrustum | ( | const VEC3 & | t1, | |
| const VEC3 & | t2, | |||
| const VEC3 & | t3, | |||
| const PLANE * | OptTrianglePlane, | |||
| const FRUSTUM_PLANES & | FrustumPlanes, | |||
| const FRUSTUM_POINTS * | OptFrustumPoints | |||
| ) |
Testuje kolizję trójkąta z frustumem.
| [in] | OptTrianglePlane | Podaj jeśli masz już wyliczone, aby przyspieszyć. |
| [in] | OptFrustumPoints | Podaj jeśli masz już wyliczone, aby przyspieszyć. |
| bool common::TriangleToTriangle | ( | const VEC3 & | V0, | |
| const VEC3 & | V1, | |||
| const VEC3 & | V2, | |||
| const VEC3 & | U0, | |||
| const VEC3 & | U1, | |||
| const VEC3 & | U2 | |||
| ) |
Testuje kolizję dwóch trójkątów 3D.
Nie wiem co się dzieje jeśli trójkąty są zdegenerowane.
1.6.1