Todos
- Member
[AABB::ClosestPoint] (const [float4] &targetPoint) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[AABB::Contains] (const [float4] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[AABB::CornerPoint] (int cornerIndex) const : Draw which index generates which corner point. - Member
[AABB::Distance] (const [float4] &point) const : Add [AABB::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). This function could be slightly optimized. See Christer Ericson's Real-Time Collision Detection, p.131. - Member
[AABB::Edge] (int edgeIndex) const : Specify which index generates which edge. - Member
[AABB::Intersection] (const [AABB] &aabb) const : Add Intersection(OBB/Polyhedron). - Member
[AABB::Intersects] (const [Ray] &ray, float &dNear, float &dFar) const : Add Intersects(Circle/Disc). - Member
[AABB::PointOnEdge] (int edgeIndex, float u) const : Document which index generates which one. - Member
[AABB::Scale] (const [float4] ¢erPoint, const [float4] &scaleFactor): mat mat mat - Member
[AABB::SetFrom] (const [OBB] &obb): Implement SetFrom(Polyhedron). - Member
[AlignedNew] (size_t numElements, size_t alignment): This is not really placement-new. - Member
[AlignedNew] (size_t numElements): This is not really placement-new. - Member
[Capsule::ClosestPoint] (const [float4] &targetPoint) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Capsule::Contains] (const [float4] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[Capsule::Distance] (const [float4] &point) const : Add Distance(Triangle/Polygon/Circle/Disc/Capsule). - Member
[Capsule::Intersects] (const [Ray] &ray) const : Add Intersects(Circle/Disc). - Member
[Capsule::IsFinite] () const : Implement IsDegenerate(). - Member
[Capsule::RandomPointOnSurface] ([LCG] &rng) const : The points are NOT distributed uniformly. Convert this to using the rejection method and RandomPointInside() to produce a uniform distribution. - Member
[Circle::ClosestPointToDisc] (const [float4] &point) const : Implement ClosestPointToDisc(Ray/LineSegment/Line). - Member
[Circle::ClosestPointToEdge] (const [float4] &point) const : Implement ClosestPointToEdge(Ray/LineSegment/Line). - Member
[Circle::DistanceToDisc] (const [float4] &point) const : Implement DistanceToDisc(Ray/LineSegment/Line). - Member
[Circle::DistanceToEdge] (const [float4] &point) const : Implement DistanceToEdge(Ray/LineSegment/Line). - Member
[Circle::EdgeContains] (const [float4] &point, float maxDistance=1e-6f) const : Implement DiscContains(float3/LineSegment/Triangle). - Member
[Clock::Day] (): . - Member
[Clock::Hour] (): . - Member
[Clock::Min] (): . - Member
[Clock::Month] (): . - Member
[Clock::Sec] (): . - Member
[Clock::Year] (): . - Member
[CombinatorialTab] (int n, int k): We can lower this size. - Member
[DetectSIMDCapability] (): SIMD detection for other x86 platforms. - Member
[float3::Distance] (const [float3] &point) const : Add [float3::Distance](Polygon/Circle/Disc/Frustum/Polyhedron). - Member
[float3x3::IsOrthonormal] (float epsilon=1e-3f) const : Epsilon magnitudes don't match. - Member
[float3x3::Orthonormalize] (int firstColumn, int secondColumn, int thirdColumn): Optimize away copies. - Member
[float3x4::Inverse] (float epsilon=1e-6f): It is possible optimize to avoid copying here by writing the inverse function specifically for [float3x4]. - Member
[float3x4::IsOrthonormal] (float epsilon=1e-3f) const : Epsilon magnitudes don't match. - Member
[float3x4::operator*] (const [float3x3] &rhs) const : SSE. - Member
[float3x4::Orthonormalize] (int firstColumn, int secondColumn, int thirdColumn): SSE. Optimize away copies. - Member
[float3x4::RemoveScale] (): SSE. - Member
[float3x4::Transpose3] (): SSE. - Member
[float4::AnotherPerpendicular3] (const [float3] &hint=float3(0, 1, 0), const [float3] &hint2=float3(0, 0, 1)) const : Enforce that (x: this, y: Perpendicular3(), z: AnotherPerpendicular3) form a right-handed basis. - Member
[float4::Recip3] () const : SSE. - Member
[float4::ScaleToLength3] (float newLength): Add SSE-enabled version. Add ClampToLength3. - Member
[float4x4::InverseColOrthogonal] (): SSE - Member
[float4x4::InverseOrthogonalUniformScale] (): SSE - Member
[float4x4::IsInvertible] (float epsilon=1e-3f) const : Optimize. - Member
[float4x4::IsOrthonormal3] (float epsilon=1e-3f) const : Epsilon magnitudes don't match. - Member
[float4x4::Orthogonalize3] (int firstColumn, int secondColumn, int thirdColumn): SSE Optimize away copies. - Member
[float4x4::Orthonormalize3] (int firstColumn, int secondColumn, int thirdColumn): SSE Optimize away copies. - Member
[float4x4::RemoveScale] (): SSE - Member
[float4x4::Transform] ([float4] *vectorArray, int numVectors) const : SSE. - Member
[float4x4::Transform] ([float4] *vectorArray, int numVectors, int strideBytes) const : SSE. - Member
[float4x4::TransformDir] ([float3] *dirArray, int numVectors) const : SSE. - Member
[float4x4::TransformDir] ([float3] *dirArray, int numVectors, int strideBytes) const : SSE. - Member
[float4x4::TransformPos] ([float3] *pointArray, int numPoints) const : SSE. - Member
[float4x4::TransformPos] ([float3] *pointArray, int numPoints, int strideBytes) const : SSE. - Member
[Frustum::ClosestPoint] (const [float4] &point) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). Improve numerical stability enough to do effectively this - but do so without temporary memory allocations. - Member
[Frustum::Contains] (const [float4] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). Make [Frustum::Contains] agnostic of the projection settings. - Member
[Frustum::Distance] (const [float4] &point) const : Add [Frustum::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). - Member
[Frustum::Edge] (int edgeIndex) const : Draw a diagram that shows which index generates which edge. - Member
[Frustum::Frustum] (): remove the opaque-qtscript attribute. - Member
[Frustum::Intersects] (const [Ray] &ray) const : Add Intersects(Circle/Disc). This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Line] &line) const : This is a naive test. Implement a faster version. - Member
[Frustum::IsFinite] () const : Implement IsDegenerate(). - Member
[Frustum::SerializeToString] () const : Implement this properly. - Member
[Frustum::UnProjectFromNearPlane] (float x, float y) const : Add [float3] UnProject(const float3 &point) const; - Member
[LCG::Int] (int a, int b): Some bug here - the result is not necessarily in the proper range. - Member
[LCG::Int] (): Convert to using Schrage's method for approximate factorization. (Numerical Recipes in C) - Member
[Line::IntersectsDisc] (const [Circle] &disc) const : This signature will be moved to bool Intersects(const Disc &disc) const; - Member
[LineSegment::Intersects] (const [Plane] &plane) const : Output intersection point. - Member
[LineSegment::IntersectsDisc] (const [Circle] &disc) const : This signature will be moved to bool Intersects(const Disc &disc) const; - Member
[Mod] (float x, int mod): Optimize. - Member
[ModPos] (float x, int mod): Optimize. - Member
[OBB::ClosestPoint] (const [float4] &point) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[OBB::Contains] (const [float4] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[OBB::CornerPoint] (int cornerIndex) const : Draw a diagram that shows which index generates which edge. - Member
[OBB::Distance] (const [float4] &point) const : Add [OBB::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). This code can be optimized a bit. See Christer Ericson's Real-Time Collision Detection, p.134. - Member
[OBB::Edge] (int edgeIndex) const : Draw a diagram that shows which index generates which edge. - Member
[OBB::Enclose] (const [float4] &point): Optimize out this comparison! Can we omit this? (redundant since axis[i] are orthonormal?) - Member
[OBB::FaceCenterPoint] (int faceIndex) const : Document which index generates which face. - Member
[OBB::FacePoint] (int faceIndex, float u, float v) const : Document which index generates which face. - Member
[OBB::Intersects] (const [OBB] &obb, float epsilon=1e-3f) const : Add Intersects(Circle/Disc). - Member
[OBB::LocalToWorld] () const : sse-matrix - Member
[OBB::OptimalEnclosingOBB] (const [float4] *pointArray, int numPoints): This function is strongly WIP! (Works, but is very very slow!) Convex hull'ize. - Member
[OBB::PointOnEdge] (int edgeIndex, float u) const : Document which index generates which one. - Member
[OBBSetFrom] ([OBB] &obb, const [AABB] &aabb, const Matrix &m): Would like to simply do the above, but instead numerical stability requires to do the following: - Member
[operator*] (const [float3x3] &lhs, const [float3x4] &rhs): SSE. - Member
[operator*] (const [float4] &lhs, const [float3x4] &rhs): SSE. - Member
[Plane::ClosestPoint] (const [LineSegment] &lineSegment) const : Output parametric t along the ray as well. - Member
[Plane::Intersects] (const [AABB] &aabb) const : Use the above form when [Plane] is SSE'ized. - Member
[Plane::Intersects] (const [Triangle] &triangle) const : Add a version of Plane-Triangle intersection which returns the line segment of intersection. - Member
[Plane::Refract] (const [float4] &[float4], float negativeSideRefractionIndex, float positiveSideRefractionIndex) const : Add Plane::Reflect. - Member
[Plane::Transform] (const [float3x4] &transform): Could optimize this function by switching to plane convention ax+by+cz+d=0 instead of ax+by+cz=d. Can optimize the inverse here by assuming orthogonality or orthonormality. - Member
[Plane::Transform] (const [float3x3] &transform): Could optimize the inverse here by assuming orthogonality or orthonormality. - Member
[Polygon::ClosestPoint] (const [LineSegment] &lineSegment, [float4] *lineSegmentPt) const : Add ClosestPoint(Line/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polygon::Contains] (const [float4] &point, float polygonThicknessSq=1e-5f) const : Add ContainsConvex(vec/etc.). See RTCD p. 202. Add Contains(Circle/Disc). - Member
[Polygon::Contains2D] (const [LineSegment] &localSpaceLineSegment) const : Add Contains2D(Circle/Disc/Triangle/Polygon). Reimplement this! - Member
[Polygon::Intersects] (const [Line] &line) const : Add Intersects(Circle/Disc). - Member
[Polygon::Intersects] (const [Capsule] &capsule) const : Optimize. - Member
[Polygon::Intersects] (const [Sphere] &sphere) const : Optimize. - Member
[Polygon::MapTo2D] (const [float4] &point) const : Return a [float3] to be able to read the distance of the point from the plane of the polygon? (or add an overload for that) Add MapTo2D(Line/LineSegment/Ray/Triangle/Polygon). - Member
[Polygon::MinimalEnclosingAABB] () const : Add MinimalEnclosingSphere() and MinimalEnclosingOBB(). - Member
[Polygon::NormalCCW] () const : Optimize temporaries. - Member
[Polygon::NormalCW] () const : Optimize temporaries. - Member
[Polygon::ProjectToAxis] (const [float4] &direction, float &outMin, float &outMax) const : Optimize! - Member
[Polygon::ToPolyhedron] () const : Add ToPolyhedron(float polygonThickness) - Member
[Polyhedron::ClosestPoint] (const [LineSegment] &lineSegment, [float4] *lineSegmentPt) const : Make lineSegmentPt an out-reference instead of an out-pointer. Add ClosestPoint(Line/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polyhedron::ClosestPointConvex] (const [float4] &point) const : Add ClosestPointConvex(Line/LineSegment/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polyhedron::Contains] (const [float4] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[Polyhedron::ContainsConvex] (const [float4] &point, float epsilon=1e-4f) const : Add ContainsConvex(Polygon/AABB/OBB/Frustum/Polyhedron/Circle/Disc/Sphere/Capsule). - Member
[Polyhedron::ConvexHull] (const [float4] *pointArray, int numPoints): This function is strongly WIP! - Member
[Polyhedron::Distance] (const [float4] &point) const : Add Distance(Line/LineSegment/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polyhedron::EdgeIndices] () const : Support this in linear time. - Member
[Polyhedron::Edges] () const : Support this in linear time. - Member
[Polyhedron::Intersects] (const [LineSegment] &lineSegment) const : Add Intersects(Circle/Disc). - Member
[Polyhedron::IntersectsConvex] (const [Line] &line) const : Add Intersects(Circle/Disc). - Member
[Polyhedron::IsConvex] () const : Real-Time Collision Detection, p. 64: A faster O(n) approach is to compute for each face F of P the centroid C of F, and for all neighboring faces G of F test if C lies behind the supporting plane of G. If some C fails to lie behind the supporting plane of one or more neighboring faces, P is concave, and is otherwise assumed convex. However, note that just as the corresponding polygonal convexity test may fail for a pentagram this test may fail for, for example, a pentagram extruded out of its plane and capped at the ends. - Member
[Polyhedron::MergeAdjacentPlanarFaces] (): - Member
[Polyhedron::MinimalEnclosingAABB] () const : Add MinimalEnclosingSphere() and MinimalEnclosingOBB(). - Member
[Polyhedron::ProjectToAxis] (const [float4] &direction, float &outMin, float &outMax) const : Optimize! - Member
[Polyhedron::SurfaceArea] () const : Optimize temporary copies. - Member
[Polyhedron::Transform] (const [float4x4] &transform): Add float4x4::BatchTransformPos. - Member
[Polyhedron::Volume] () const : Optimize temporary copies. - Member
[Polynomial::SolveQuadratic] (float a, float b, float c, float &root1, float &root2): numerical float issues: catastrophic cancellation can occur in the subtraction. - Member
[QuadTree< T >::QuadTree] (): Currently storing persistent raw pointers to this array outside the array. Remove the requirement to never reallocate the vector! - Member
[Quat::Slerp] (const [Quat] &target, float t) const : SSE. - Member
[Quat::SlerpVector] (const [float3] &from, const [float3] &to, float t): The following chain can be greatly optimized. - Member
[Quat::ToEulerXYX] () const : the following could be heavily optimized. Don't route through [float3x3] conversion. - Member
[Quat::Transform] (const [float3] &[float4]) const : Optimize/benchmark the scalar path not to generate a matrix! - Member
[Ray::IntersectsDisc] (const [Circle] &disc) const : This signature will be moved to bool Intersects(const Disc &disc) const; - Member
[SATIntersect] (const A &a, const B &b): Make this API safe. Make this API safe. - Member
[Set3x3PartRotateEulerXYX] (Matrix &m, float &x2, float &y, float &x1): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerXYZ] (Matrix &m, float x, float y, float z): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerXZX] (Matrix &m, float &x2, float &z, float &x1): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerXZY] (Matrix &m, float &x, float &z, float &y): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerYXY] (Matrix &m, float &y2, float &x, float &y1): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerYXZ] (Matrix &m, float &y, float &x, float &z): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerYZX] (Matrix &m, float &y, float &z, float &x): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerYZY] (Matrix &m, float &y2, float &z, float &y1): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerZXY] (Matrix &m, float &z, float &x, float &y): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerZXZ] (Matrix &m, float &z2, float &x, float &z1): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerZYX] (Matrix &m, float &z, float &y, float &x): Vectorize to compute 4 sines+cosines at one time. - Member
[Set3x3PartRotateEulerZYZ] (Matrix &m, float &z2, float &y, float &z1): Vectorize to compute 4 sines+cosines at one time. - Member
[Sphere::ClosestPoint] (const [float4] &point) const : Add [Sphere::ClosestPoint](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Sphere::Contains] (const [float4] &point) const : Add [Sphere::Contains](Circle/Disc). - Member
[Sphere::Distance] (const [float4] &point) const : Add [Sphere::Distance](Polygon/Circle/Disc/Frustum/Polyhedron). - Member
[Sphere::RandomPointInside] ([LCG] &lcg): Add Sphere::Point(polarYaw, polarPitch, radius). - Member
[Sphere::RandomPointOnSurface] ([LCG] &lcg): Add Sphere::PointOnSurface(polarYaw, polarPitch). - Member
[Triangle::ClosestPoint] (const [Line] &line, [float4] *otherPt=0) const : Add ClosestPoint(Ray/Plane/Polygon/Circle/Disk/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). Optimize this function. - Member
[Triangle::ClosestPoint] (const [LineSegment] &lineSegment, [float4] *otherPt=0) const : Optimize. - Member
[Triangle::ClosestPointToTriangleEdge] (const [Line] &line, float *outU, float *outV, float *outD) const : Add ClosestPointToTriangleEdge(Point/Ray/Triangle/Plane/Polygon/Circle/Disk/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). Optimize! - Member
[Triangle::ClosestPointToTriangleEdge] (const [LineSegment] &lineSegment, float *outU, float *outV, float *outD) const : Optimize! - Member
[Triangle::Contains] (const [float4] &point, float triangleThicknessSq=1e-5f) const : Add Triangle::Contains(Circle) and Triangle::Contains(Disc). The plane-point distance test is omitted in Real-Time Collision Detection. p. 25. A bug in the book? - Member
[Triangle::Distance] (const [float4] &point) const : Add [Triangle::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). - Member
[Triangle::RandomPointInside] ([LCG] &rng) const : rng.Float() returns [0,1[, but to be completely uniform, we'd need [0,1] here.