Funkcje | |
| 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::PointToLineDistance (const VEC3 &P, const VEC3 &LineOrig, const VEC3 &LineDir) |
| Zwraca odległość punktu od prostej. | |
| 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. | |
| void | common::ClosestPointOnLineSegment (VEC3 *Out, const VEC3 &P, const VEC3 &P1, const VEC3 &P2) |
| Wyznacza najbliższy punkt leżący na odcinku P1-P2 względem punktu P. | |
| void | common::ClosestPointInBox (VEC3 *Out, const BOX &Box, const VEC3 &p) |
| Wyznacza najbliższy punkt wewnątrz prostopadłościanu względem punktu p. | |
| float | common::PointToBoxDistance (const VEC3 &p, const BOX &box) |
| Odległość punktu od prostopadłościanu. | |
| 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::PointOnTriangle (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::RayToFrustum (const VEC3 &RayOrig, const VEC3 &RayDir, const FRUSTUM_PLANES &Frustum, float *t_near, float *t_far) |
| Kolizja promienia z frustumem. | |
| 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::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. | |
| bool | common::PlaneToBox (const PLANE &plane, const BOX &box) |
| Kolizja płaszczyzny z prostopadłościanem. | |
| int | common::ClassifyBoxToPlane (const PLANE &plane, const BOX &box) |
| Klasyfikuje położenie prostopadłościanu względem płaszczyzny. | |
| 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 &p1, const VEC3 &p2, const VEC3 &p3, const BOX &Box, const PLANE *OptTrianglePlane=NULL) |
| 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::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 *LineOrig, VEC3 *LineDir) |
| 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::IntersectLines (const VEC2 &p1, const VEC2 &p2, const VEC2 &p3, const VEC2 &p4) |
| Zwraca true, jeśli dwa odcinki 2D: p1-p2 i p3-p4 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::PointInPolygon (const VEC2 &Point, const VEC2 PolygonPoints[], uint PolygonPointCount) |
| Zwraca true, jeśli podany punkt leży wewnątrz podanego wielokąta (2D). | |
| bool | common::RayToPolygon (const VEC3 &RayOrig, const VEC3 &RayDir, const VEC3 PolygonPoints[], uint PolygonPointCount, bool BackfaceCulling, float *OutT) |
| Zwraca true, jeśli promień przecina wielokąt (3D) i wtedy przez OutT zwraca parametr dla promienia. | |
| 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 *OutT) |
| Kolizja poruszającego się AABB z drugim AABB. | |
| 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.
| 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.
| int common::ClassifyBoxToPlane | ( | const PLANE & | plane, | |
| const BOX & | box | |||
| ) |
Klasyfikuje położenie prostopadłościanu względem płaszczyzny.
| int common::ClassifyFrustumToPlane | ( | const FRUSTUM_POINTS & | Frustum, | |
| const PLANE & | Plane | |||
| ) |
Kolizja płaszczyzny z frustumem (klasyfikacja).
| 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.
| 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::ClosestPointOnLineSegment | ( | VEC3 * | Out, | |
| const VEC3 & | P, | |||
| const VEC3 & | P1, | |||
| const VEC3 & | P2 | |||
| ) |
Wyznacza najbliższy punkt leżący na odcinku P1-P2 względem punktu P.
| void common::ClosestPointOnPlane | ( | VEC3 * | Out, | |
| const PLANE & | Plane, | |||
| const VEC3 & | p | |||
| ) |
Wyznacza najbliższy punkt na płaszczyźnie względem punktu p.
| 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.
| 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 * | LineOrig, | |||
| VEC3 * | LineDir | |||
| ) |
Wylicza kolizję dwóch płaszczyzn zwracając parametry prostej tworzącej ich przecięcie.
Jesli nie ma kolizji, zwraca false. Zwrócony kierunek promienia 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.
| bool common::IntersectLines | ( | const VEC2 & | p1, | |
| const VEC2 & | p2, | |||
| const VEC2 & | p3, | |||
| const VEC2 & | p4 | |||
| ) |
Zwraca true, jeśli dwa odcinki 2D: p1-p2 i p3-p4 zachodzą na siebie.
| bool common::PlaneToBox | ( | const PLANE & | plane, | |
| const BOX & | box | |||
| ) |
Kolizja płaszczyzny z prostopadłościanem.
| bool common::PlaneToTriangle | ( | const PLANE & | Plane, | |
| const VEC3 & | p0, | |||
| const VEC3 & | p1, | |||
| const VEC3 & | p2 | |||
| ) |
Kolizja płaszczyzny z trójkątem.
| 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 VEC2 | PolygonPoints[], | |||
| uint | 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::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.
| bool common::PointOnTriangle | ( | const VEC3 & | point, | |
| const VEC3 & | pa, | |||
| const VEC3 & | pb, | |||
| const VEC3 & | pc | |||
| ) |
Zwraca true, jeśli punkt należy do trójkąta.
| float common::PointToBoxDistance | ( | const VEC3 & | p, | |
| const BOX & | box | |||
| ) |
Odległość punktu od prostopadłościanu.
Jeśli p leży wewnątrz tego prostopadłościanu, zwraca 0.
| 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::PointToLineDistance | ( | const VEC3 & | P, | |
| const VEC3 & | LineOrig, | |||
| const VEC3 & | LineDir | |||
| ) |
Zwraca odległość punktu od prostej.
| LineDir | musi być znormalizowane! |
| 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.
| 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 VEC3 | PolygonPoints[], | |||
| uint | PolygonPointCount, | |||
| bool | BackfaceCulling, | |||
| float * | OutT | |||
| ) |
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. Jeśli BackfaceCulling = true, promień trafia tylko jeśli wchodzi z jednej strony, z tej z której wierzchołki wielokąta są widoczne jako zorientowane w kierunku zgodnym ze wskazówkami zeraga.
| 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). |
| 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::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::SphereToPlane | ( | const VEC3 & | SphereCenter, | |
| float | SphereRadius, | |||
| const PLANE & | Plane | |||
| ) |
Zwraca true, jeśli sfera koliduje z płaszczyzną.
Płaszczyzna chyba 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::SweptBoxToBox | ( | const BOX & | Box1, | |
| const BOX & | Box2, | |||
| const VEC3 & | SweepDirBox1, | |||
| float * | OutT | |||
| ) |
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 & | p1, | |
| const VEC3 & | p2, | |||
| const VEC3 & | p3, | |||
| const BOX & | Box, | |||
| const PLANE * | OptTrianglePlane = NULL | |||
| ) |
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.5.5