Classes | |
| struct | common::POINT_ |
| Punkt 2D z liczb całkowitych. More... | |
| struct | common::VEC2 |
| Wektor floatów 2D. More... | |
| struct | common::RECTI |
| Prostokąt z liczb całkowitych. More... | |
| struct | common::BOX |
| AABB z 2 punktów 3D. More... | |
| struct | common::OBB |
| OBB - Oriented Bounding Box - prostopadłościan o dowolnej orientacji. More... | |
| struct | common::RECT3D |
| Płaski prostokąt, dowolnie zorientowany w przestrzeni 3D. More... | |
| struct | common::COLOR |
| Kolor w formacie A8R8G8B8. More... | |
| struct | common::PLANE |
| Płaszczyzna. More... | |
| struct | common::LINE2D |
| Prosta 2D. More... | |
| struct | common::MATRIX |
| Macierz 4 x 4. More... | |
| struct | common::QUATERNION |
| Kwaternion. More... | |
| struct | common::AFFINE2D |
| Affine transform of 2D point/vector. More... | |
| class | common::RayToTriangleCalc |
| Klasa, która dzięki pamiętaniu wyników pośrednich przyspiesza testowanie kolizji jednego trójkąta z wieloma promieniami. More... | |
Modules | |
| Punkt 2D z liczb całkowitych | |
| Wektor floatów 2D, 3D, 4D | |
| Trójkąt | |
| Promień | |
| Prostokąt | |
| AABB | |
| Rect 3D | |
| Kolory | |
| Płaszczyzna | |
| Prosta 2D | |
| Macierz | |
| Kwaternion | |
| Affine 2D transform | |
| Frustum | |
| Kapsuła | |
| Wygładzanie zmiennej | |
| Współrzędne sferyczne | |
| Curves | |
| Kolizje | |
| Poisson Disc | |
| Vector swizzling | |
Functions | |
| template<typename DestT , typename SrcT > | |
| DestT & | common::math_cast (const SrcT &x) |
| Szablon bazowy do konwersji między typami matematycznymi. | |
| void | common::ConvexHull2D (std::vector< VEC2 > *OutPoints, const VEC2 InPoints[], size_t InPointCount) |
| Zwraca wypukłą otoczkę zbioru punktów 2D. | |
| size_t | common::ClosestPoint (const VEC2 &p, const VEC2 Points[], size_t PointCount, float *OutDistance=NULL) |
| Z podanej tablicy punktów typu VEC2 znajduje punkt najbliższy względem p, zwraca jego indeks. | |
| size_t | common::ClosestPoint (const VEC2 &p, const void *Data, size_t PointCount, int Stride, float *OutDistance=NULL) |
| size_t | common::ClosestPoint (const VEC3 &p, const VEC3 Points[], size_t PointCount, float *OutDistance=NULL) |
| Z podanej tablicy punktów typu VEC3 znajduje punkt najbliższy względem p, zwraca jego indeks. | |
| size_t | common::ClosestPoint (const VEC3 &p, const void *Data, size_t PointCount, int Stride, float *OutDistance=NULL) |
| size_t | common::FurthestPoint (const VEC2 &p, const VEC2 Points[], size_t PointCount, float *OutDistance=NULL) |
| Z podanej tablicy punktów typu VEC2 znajduje punkt najdalszy względem p, zwraca jego indeks. | |
| size_t | common::FurthestPoint (const VEC2 &p, const void *Data, size_t PointCount, int Stride, float *OutDistance=NULL) |
| size_t | common::FurthestPoint (const VEC3 &p, const VEC3 Points[], size_t PointCount, float *OutDistance=NULL) |
| Z podanej tablicy punktów typu VEC3 znajduje punkt najdalszy względem p, zwraca jego indeks. | |
| size_t | common::FurthestPoint (const VEC3 &p, const void *Data, size_t PointCount, int Stride, float *OutDistance=NULL) |
| size_t | common::FurthestPointForDir (const VEC2 &Dir, const VEC2 Points[], size_t PointCount) |
| Z podanej tablicy punktów typu VEC2 znajduje najbardziej wysunięty w kierunku określonym przez Dir. Zwraca jego indeks. | |
| size_t | common::FurthestPointForDir (const VEC2 &Dir, const void *Data, size_t PointCount, int Stride) |
| size_t | common::FurthestPointForDir (const VEC3 &Dir, const VEC3 Points[], size_t PointCount) |
| Z podanej tablicy punktów typu VEC3 znajduje najbardziej wysunięty w kierunku określonym przez Dir. Zwraca jego indeks. | |
| size_t | common::FurthestPointForDir (const VEC3 &Dir, const void *Data, size_t PointCount, int Stride) |
| void | common::RectBoundingPoints (RECTF *OutRect, const VEC2 Points[], size_t PointCount) |
| Tworzy najmniejszy prostokąt otaczający podany zbiór punktów typu VEC2. | |
| void | common::RectBoundingPoints (RECTF *OutRect, const void *Data, size_t PointCount, int Stride) |
| void | common::BoxBoundingPoints (BOX *box, const VEC3 points[], size_t PointCount) |
| Tworzy najmniejszy boks otaczający podany zbiór punktów typu VEC3. | |
| void | common::BoxBoundingPoints (BOX *box, const void *Data, size_t PointCount, int Stride) |
| void | common::SphereBoundingSpheres (VEC3 *OutCenter, float *OutRadius, const VEC3 &Center1, float Radius1, const VEC3 &Center2, float Radius2) |
| Liczy sferę otaczającą dwie sfery. | |
| void | common::CircleBoundingPoints (VEC2 *OutSphereCenter, float *OutSphereRadius, const VEC2 Points[], size_t PointCount) |
| Znajduje okrąg otaczający podany zbiór punktów typu VEC2. | |
| void | common::CircleBoundingPoints (VEC2 *OutSphereCenter, float *OutSphereRadius, const void *PointData, size_t PointCount, int PointStride) |
| void | common::SphereBoundingPoints (VEC3 *OutSphereCenter, float *OutSphereRadius, const VEC3 Points[], size_t PointCount) |
| Znajduje sferę otaczającą podany zbiór punktów typu VEC3. | |
| void | common::SphereBoundingPoints (VEC3 *OutSphereCenter, float *OutSphereRadius, const void *PointData, size_t PointCount, int PointStride) |
| void | common::OriginCircleBoundingPoints (float *OutRadius, const VEC2 Points[], size_t PointCount) |
| Znajduje promień najmniejszego okręgu o środku (0,0) otaczającego podany zbiór punktów 2D. | |
| void | common::OriginCircleBoundingPoints (float *OutRadius, const void *PointData, size_t PointCount, int PointStride) |
| void | common::OriginSphereBoundingPoints (float *OutRadius, const VEC3 Points[], size_t PointCount) |
| Znajduje promień najmniejszej sfery o środku (0,0) otaczającej podany zbiór punktów 3D. | |
| void | common::OriginSphereBoundingPoints (float *OutRadius, const void *PointData, size_t PointCount, int PointStride) |
| void | common::CalcCentroid (VEC2 *OutCentroid, const VEC2 Points[], size_t PointCount) |
| Dla podanego zbioru punktów typu VEC2 oblicza ich centroid, czyli po prostu średnią. | |
| void | common::CalcCentroid (VEC2 *OutCentroid, const void *PointData, size_t PointCount, int PointStride) |
| void | common::CalcCentroid (VEC3 *OutCentroid, const VEC3 Points[], size_t PointCount) |
| Dla podanego zbioru punktów typu VEC3 oblicza ich centroid, czyli po prostu średnią. | |
| void | common::CalcCentroid (VEC3 *OutCentroid, const void *PointData, size_t PointCount, int PointStride) |
| void | common::CalcCovarianceMatrix (MATRIX33 *OutCov, const VEC3 Points[], size_t PointCount) |
| Oblicza macierz kowariancji dla podanego zbioru punktów typu VEC3. | |
| void | common::CalcCovarianceMatrix (MATRIX33 *OutCov, const void *PointData, size_t PointCount, int PointStride) |
| void | common::CalcEigenvaluesAndEigenvectors (MATRIX33 *InCovOutEigenvalues, MATRIX33 *OutEigenvectors) |
| Oblicza wartości własne i wektory własne dla podanej macierzy symetrycznej (np. macierz kowariancji). | |
| void | common::BoxBoundingSphere (VEC3 *SphereCenter, float *SphereRadius, const BOX &Box) |
| Oblicza sferę otaczającą box. | |
| void | common::SphereBoundingBox (BOX *Out, const VEC3 &SphereCenter, float SphereRadius) |
| Oblicza box otaczający sferę. | |
| void | common::BoxBoundingSpheres (BOX *OutBox, const VEC3 SpheresCenter[], const float SpheresRadius[], size_t SphereCount) |
| Wylicza AABB otaczający podany zbiór sfer. | |
| void | common::RandomPointInUnitSphere (VEC3 *Out, RandomGenerator &Rand) |
| Losuje punkt wewnątrz kuli o środku w (0,0,0) i promieniu 1. Rozkład równomierny. | |
| void | common::RandomPointInUnitSphere (VEC3 *Out) |
| void | common::RandomPointInUnitCircle (VEC2 *Out, RandomGenerator &Rand) |
| Losuje punkt wewnątrz koła o środku w (0,0) i promieniu 1. Rozkład równomierny. | |
| void | common::RandomPointInUnitCircle (VEC2 *Out) |
| void | common::CalcBillboardOrientation (VEC3 *OutRight, VEC3 *OutUp, unsigned DegreesOfFreedom, bool UseRealDir, const VEC3 &DefinedRight, const VEC3 &DefinedUp, const VEC3 &CamRightDir, const VEC3 &CamRealUpDir, const VEC3 &CameraToObjectDir) |
| Calculates orientation of a 3D billboard in according to its parameters and camera parameters. | |
Variables | |
| const float | common::FLOAT_EPSILON = 1e-6f |
| Mała stała. | |
| const MATRIX | common::HL2_TO_TANGENT_MATRIX |
| const MATRIX | common::TANGENT_TO_HL2_MATRIX |
| const VEC3 | common::HL2_BASIS_VECTORS [3] |
| Wektory bazowe HL2 Space wyrażone w Tangent Space. | |
Dokumentacja: Module_Math
Nagłówek: Math.hpp
| void common::BoxBoundingPoints | ( | BOX * | box, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride | |||
| ) |
| void common::BoxBoundingPoints | ( | BOX * | box, | |
| const VEC3 | points[], | |||
| size_t | PointCount | |||
| ) |
Tworzy najmniejszy boks otaczający podany zbiór punktów typu VEC3.
| void common::BoxBoundingSphere | ( | VEC3 * | SphereCenter, | |
| float * | SphereRadius, | |||
| const BOX & | Box | |||
| ) |
Oblicza sferę otaczającą box.
| void common::BoxBoundingSpheres | ( | BOX * | OutBox, | |
| const VEC3 | SpheresCenter[], | |||
| const float | SpheresRadius[], | |||
| size_t | SphereCount | |||
| ) |
Wylicza AABB otaczający podany zbiór sfer.
| SphereCount | Musi być większe od 0. |
| void common::CalcBillboardOrientation | ( | VEC3 * | OutRight, | |
| VEC3 * | OutUp, | |||
| unsigned | DegreesOfFreedom, | |||
| bool | UseRealDir, | |||
| const VEC3 & | DefinedRight, | |||
| const VEC3 & | DefinedUp, | |||
| const VEC3 & | CamRightDir, | |||
| const VEC3 & | CamRealUpDir, | |||
| const VEC3 & | CameraToObjectDir | |||
| ) |
Calculates orientation of a 3D billboard in according to its parameters and camera parameters.
OutRight, OutUp will be normalized vectors with X, Y directions for the billboard.
DegreesOfFreedom and UseRealDir control billboard orientation mode. DegreesOfFreedom may be 0, 1, 2.
0 = billboard not rotating at all (DefinedRight and DefinedUp required).
1 = billboard rotating only around its Y axis (DefinedUp required).
2 = billboard rotating around its Y and X axes (neither DefinedRight nor DefinedUp required).
DefinedRight and DefinedUp are original direction vectors of a billboard.
CamRightDir must be orthogonal to CamReadUpDir, so CamRealUpDir cannot be constant like VEC3_POSITIVE_Y.
CameraToObjectDir must be normalize(BillboardCenterPos - EyePos).
| void common::CalcCentroid | ( | VEC3 * | OutCentroid, | |
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::CalcCentroid | ( | VEC3 * | OutCentroid, | |
| const VEC3 | Points[], | |||
| size_t | PointCount | |||
| ) |
Dla podanego zbioru punktów typu VEC3 oblicza ich centroid, czyli po prostu średnią.
| void common::CalcCentroid | ( | VEC2 * | OutCentroid, | |
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::CalcCentroid | ( | VEC2 * | OutCentroid, | |
| const VEC2 | Points[], | |||
| size_t | PointCount | |||
| ) |
Dla podanego zbioru punktów typu VEC2 oblicza ich centroid, czyli po prostu średnią.
| void common::CalcCovarianceMatrix | ( | MATRIX33 * | OutCov, | |
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::CalcCovarianceMatrix | ( | MATRIX33 * | OutCov, | |
| const VEC3 | Points[], | |||
| size_t | PointCount | |||
| ) |
Oblicza macierz kowariancji dla podanego zbioru punktów typu VEC3.
| void common::CalcEigenvaluesAndEigenvectors | ( | MATRIX33 * | InCovOutEigenvalues, | |
| MATRIX33 * | OutEigenvectors | |||
| ) |
Oblicza wartości własne i wektory własne dla podanej macierzy symetrycznej (np. macierz kowariancji).
Uwaga! Dużo obliczeń, procedura iteracyjna. Może działać wolno.
| InCovOutEigenvalues | [in,out] Jako wejście - dana macierz. Jako wyjście - na przekątnej ma wartości własne. | |
| OutEigenvectors | [out] Wektory własne zapisane w kolumnach. |
| void common::CircleBoundingPoints | ( | VEC2 * | OutSphereCenter, | |
| float * | OutSphereRadius, | |||
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::CircleBoundingPoints | ( | VEC2 * | OutSphereCenter, | |
| float * | OutSphereRadius, | |||
| const VEC2 | Points[], | |||
| size_t | PointCount | |||
| ) |
Znajduje okrąg otaczający podany zbiór punktów typu VEC2.
Nie jest to może najmniejszy okrąg, ale przynajmniej ten algorytm jest prosty i szybki.
| size_t common::ClosestPoint | ( | const VEC3 & | p, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride, | |||
| float * | OutDistance = NULL | |||
| ) |
| size_t common::ClosestPoint | ( | const VEC3 & | p, | |
| const VEC3 | Points[], | |||
| size_t | PointCount, | |||
| float * | OutDistance = NULL | |||
| ) |
Z podanej tablicy punktów typu VEC3 znajduje punkt najbliższy względem p, zwraca jego indeks.
| OutDistance | jest opcjonalny, można podać NULL Jeśli odległość od niego nas nie interesuje. |
| size_t common::ClosestPoint | ( | const VEC2 & | p, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride, | |||
| float * | OutDistance = NULL | |||
| ) |
| size_t common::ClosestPoint | ( | const VEC2 & | p, | |
| const VEC2 | Points[], | |||
| size_t | PointCount, | |||
| float * | OutDistance = NULL | |||
| ) |
Z podanej tablicy punktów typu VEC2 znajduje punkt najbliższy względem p, zwraca jego indeks.
| OutDistance | jest opcjonalny, można podać NULL Jeśli odległość od niego nas nie interesuje. |
| void common::ConvexHull2D | ( | std::vector< VEC2 > * | OutPoints, | |
| const VEC2 | InPoints[], | |||
| size_t | InPointCount | |||
| ) |
Zwraca wypukłą otoczkę zbioru punktów 2D.
| size_t common::FurthestPoint | ( | const VEC3 & | p, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride, | |||
| float * | OutDistance = NULL | |||
| ) |
| size_t common::FurthestPoint | ( | const VEC3 & | p, | |
| const VEC3 | Points[], | |||
| size_t | PointCount, | |||
| float * | OutDistance = NULL | |||
| ) |
Z podanej tablicy punktów typu VEC3 znajduje punkt najdalszy względem p, zwraca jego indeks.
| OutDistance | jest opcjonalny, można podać NULL Jeśli odległość od niego nas nie interesuje. |
| size_t common::FurthestPoint | ( | const VEC2 & | p, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride, | |||
| float * | OutDistance = NULL | |||
| ) |
| size_t common::FurthestPoint | ( | const VEC2 & | p, | |
| const VEC2 | Points[], | |||
| size_t | PointCount, | |||
| float * | OutDistance = NULL | |||
| ) |
Z podanej tablicy punktów typu VEC2 znajduje punkt najdalszy względem p, zwraca jego indeks.
| OutDistance | jest opcjonalny, można podać NULL Jeśli odległość od niego nas nie interesuje. |
| size_t common::FurthestPointForDir | ( | const VEC3 & | Dir, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride | |||
| ) |
| size_t common::FurthestPointForDir | ( | const VEC3 & | Dir, | |
| const VEC3 | Points[], | |||
| size_t | PointCount | |||
| ) |
Z podanej tablicy punktów typu VEC3 znajduje najbardziej wysunięty w kierunku określonym przez Dir. Zwraca jego indeks.
| size_t common::FurthestPointForDir | ( | const VEC2 & | Dir, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride | |||
| ) |
| size_t common::FurthestPointForDir | ( | const VEC2 & | Dir, | |
| const VEC2 | Points[], | |||
| size_t | PointCount | |||
| ) |
Z podanej tablicy punktów typu VEC2 znajduje najbardziej wysunięty w kierunku określonym przez Dir. Zwraca jego indeks.
| DestT& common::math_cast | ( | const SrcT & | x | ) | [inline] |
Szablon bazowy do konwersji między typami matematycznymi.
Ta wersja nie działa, specjalizacje będą działać.
| void common::OriginCircleBoundingPoints | ( | float * | OutRadius, | |
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::OriginCircleBoundingPoints | ( | float * | OutRadius, | |
| const VEC2 | Points[], | |||
| size_t | PointCount | |||
| ) |
Znajduje promień najmniejszego okręgu o środku (0,0) otaczającego podany zbiór punktów 2D.
| void common::OriginSphereBoundingPoints | ( | float * | OutRadius, | |
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::OriginSphereBoundingPoints | ( | float * | OutRadius, | |
| const VEC3 | Points[], | |||
| size_t | PointCount | |||
| ) |
Znajduje promień najmniejszej sfery o środku (0,0) otaczającej podany zbiór punktów 3D.
| void common::RandomPointInUnitCircle | ( | VEC2 * | Out | ) |
| void common::RandomPointInUnitCircle | ( | VEC2 * | Out, | |
| RandomGenerator & | Rand | |||
| ) |
Losuje punkt wewnątrz koła o środku w (0,0) i promieniu 1. Rozkład równomierny.
| void common::RandomPointInUnitSphere | ( | VEC3 * | Out | ) |
| void common::RandomPointInUnitSphere | ( | VEC3 * | Out, | |
| RandomGenerator & | Rand | |||
| ) |
Losuje punkt wewnątrz kuli o środku w (0,0,0) i promieniu 1. Rozkład równomierny.
| void common::RectBoundingPoints | ( | RECTF * | OutRect, | |
| const void * | Data, | |||
| size_t | PointCount, | |||
| int | Stride | |||
| ) |
| void common::RectBoundingPoints | ( | RECTF * | OutRect, | |
| const VEC2 | Points[], | |||
| size_t | PointCount | |||
| ) |
Tworzy najmniejszy prostokąt otaczający podany zbiór punktów typu VEC2.
| void common::SphereBoundingBox | ( | BOX * | Out, | |
| const VEC3 & | SphereCenter, | |||
| float | SphereRadius | |||
| ) |
Oblicza box otaczający sferę.
| void common::SphereBoundingPoints | ( | VEC3 * | OutSphereCenter, | |
| float * | OutSphereRadius, | |||
| const void * | PointData, | |||
| size_t | PointCount, | |||
| int | PointStride | |||
| ) |
| void common::SphereBoundingPoints | ( | VEC3 * | OutSphereCenter, | |
| float * | OutSphereRadius, | |||
| const VEC3 | Points[], | |||
| size_t | PointCount | |||
| ) |
Znajduje sferę otaczającą podany zbiór punktów typu VEC3.
Nie jest to może najmniejsza sfera, ale przynajmniej ten algorytm jest prosty i szybki.
| void common::SphereBoundingSpheres | ( | VEC3 * | OutCenter, | |
| float * | OutRadius, | |||
| const VEC3 & | Center1, | |||
| float | Radius1, | |||
| const VEC3 & | Center2, | |||
| float | Radius2 | |||
| ) |
Liczy sferę otaczającą dwie sfery.
| const float common::FLOAT_EPSILON = 1e-6f |
Mała stała.
| const VEC3 common::HL2_BASIS_VECTORS[3] |
Wektory bazowe HL2 Space wyrażone w Tangent Space.
| const MATRIX common::HL2_TO_TANGENT_MATRIX |
Macierz rotacji przekształcająca wektory z przestrzeni Half-Life 2 do przestrzeni stycznej Tangent Space i jej transpozycja przekształcająca z powrotem. To są macierz ortogonalne.
b0 = ( -1/sqrt(6), -1/sqrt(2), 1/sqrt(3) ) b1 = ( -1/sqrt(6), 1/sqrt(2), 1/sqrt(3) ) b2 = ( sqrt(2/3), 0, 1/sqrt(3) )
| const MATRIX common::TANGENT_TO_HL2_MATRIX |
1.6.1