Todos
- Member
[AABB::ClosestPoint] (const [float3] &targetPoint) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[AABB::Contains] (const [Sphere] &sphere) const : Optimize. - Member
[AABB::Contains] (const [float3] &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 [float3] &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::SetFrom] (const [OBB] &obb): Implement SetFrom(Polyhedron). - Member
[Capsule::ClosestPoint] (const [float3] &targetPoint) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Capsule::Contains] (const [float3] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[Capsule::Distance] (const [float3] &point) const : Add Distance(Triangle/Polygon/Circle/Disc/Capsule). - Member
[Capsule::Intersects] (const [Ray] &ray) const : Add Intersects(Circle/Disc). - Member
[Capsule::Intersects] (const [Sphere] &sphere) const : Optimize to avoid square roots. - Member
[Capsule::Intersects] (const [Capsule] &capsule) const : Optimize to avoid square roots. - Member
[Capsule::IsFinite] () const : Implement IsDegenerate(). - Member
[Capsule::RandomPointOnSurface] ([LCG] &rng) const : The points are NOT distributed uniformly. - Member
[Circle::ClosestPointToDisc] (const [float3] &point) const : Implement ClosestPointToDisc(Ray/LineSegment/Line). - Member
[Circle::ClosestPointToEdge] (const [float3] &point) const : Implement ClosestPointToEdge(Ray/LineSegment/Line). - Member
[Circle::DistanceToDisc] (const [float3] &point) const : Implement DistanceToDisc(Ray/LineSegment/Line). - Member
[Circle::DistanceToEdge] (const [float3] &point) const : Implement DistanceToEdge(Ray/LineSegment/Line). - Member
[Circle::EdgeContains] (const [float3] &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
[float2::MinAreaRect] (const [float2] *pointArray, int numPoints, [float2] ¢er, [float2] &uDir, [float2] &vDir): Examine. A bug in the book? All the following are initialized to 0!. - Member
[float3::Distance] (const [float3] &point) const : Add [float3::Distance](Polygon/Circle/Disc/Frustum/Polyhedron). - Member
[float3x3::IsInvertible] (float epsilon=1e-3f) const : Optimize. - 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] (): It is possible optimize to avoid copying here by writing the inverse function specifically for [float3x4]. - Member
[float3x4::IsInvertible] (float epsilon=1e-3f) const : Optimize. - Member
[float3x4::IsOrthonormal] (float epsilon=1e-3f) const : Epsilon magnitudes don't match. - Member
[float3x4::OrthographicProjection] (float nearPlaneDistance, float farPlaneDistance, float horizontalViewportSize, float verticalViewportSize): Implement. - Member
[float3x4::Orthonormalize] (int firstColumn, int secondColumn, int thirdColumn): Optimize away copies. - 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
[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): Optimize away copies. - Member
[float4x4::Orthonormalize3] (int firstColumn, int secondColumn, int thirdColumn): Optimize away copies. - Member
[float4x4::PerspectiveProjection] (float nearPlaneDistance, float farPlaneDistance, float horizontalFov, float verticalFov): Implement. - Member
[Frustum::ClosestPoint] (const [float3] &point) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Frustum::Contains] (const [float3] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[Frustum::Distance] (const [float3] &point) const : Add [Frustum::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). - 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::Intersects] (const [LineSegment] &lineSegment) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [AABB] &aabb) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [OBB] &obb) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Triangle] &triangle) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Polygon] &polygon) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Sphere] &sphere) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Capsule] &capsule) const : This is a naive test. Implement a faster version. - Member
[Frustum::Intersects] (const [Frustum] &frustum) const : This is a naive test. Implement a faster version. - Member
[Frustum::IsFinite] () const : Implement IsDegenerate(). - Member
[Frustum::LookAt] (float x, float y) const : This function will be renamed and replaced with Unproject(float x, float y) and Unproject(const float3 &p); - Member
[Frustum::LookAtFromNearPlane] (float x, float y) const : This function will be renamed and replaced with Unproject(float x, float y) and Unproject(const float3 &p); - Member
[Frustum::ProjectionMatrix] () const : Implement. - Member
[Frustum::RandomPointInside] ([LCG] &rng) const : Implement. - Member
[LCG::Int] (): Convert to using Schrage's method for approximate factorization. (Numerical Recipes in C) - Member
[LCG::Int] (int a, int b): Some bug here - the result is not necessarily in the proper range. - Member
[Line::AreCollinear] (const [float3] &p1, const [float3] &p2, const [float3] &p3, float epsilon=1e-3f): Improve this check to be distance length -invariant. - Member
[Line::IntersectsDisc] (const [Circle] &disc) const : This signature will be moved to bool Intersects(const Disc &disc) const; - Member
[LineSegment::Distance] (const [float3] &point, float *d=0) const : This function could be slightly optimized. See Christer Ericson's Real-Time Collision Detection, p.130. - 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 [float3] &point) const : Add ClosestPoint(Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[OBB::Contains] (const [float3] &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 [float3] &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::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 [AABB] &aabb) const : Add Intersects(Circle/Disc). - Member
[OBB::MaximalContainedAABB] () const : Implement. - Member
[OBB::PCAEnclosingOBB] (const [float3] *pointArray, int numPoints): Implement. - Member
[OBB::PointOnEdge] (int edgeIndex, float u) const : Document which index generates which one. - Member
[OBB::SetFrom] (const [Polyhedron] &polyhedron): Implement. - Member
[OBB::SetFromApproximate] (const [float3] *pointArray, int numPoints): Implement. - 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
[Plane::ClosestPoint] (const [Ray] &ray) const : Output parametric d as well. - Member
[Plane::ClosestPoint] (const [LineSegment] &lineSegment) const : Output parametric d as well. - Member
[Plane::DihedralAngle] (const [Plane] &plane) const : Implement. - Member
[Plane::GenerateCircle] (const [float3] &circleCenter, float radius) const : Implement. - Member
[Plane::Intersects] (const [Triangle] &triangle) const : Add a version of Plane-Triangle intersection which returns the line segment of intersection. - Member
[Plane::ObliqueProject] (const [float3] &point, const [float3] &obliqueProjectionDir) const : Implement. - Member
[Plane::ObliqueProjection] (const [float3] &obliqueProjectionDir) const : Implement. - Member
[Plane::Refract] (const [float3] &vec, 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 [float3] &point) const : Add ClosestPoint(Line/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polygon::Contains] (const [float3] &point, float polygonThickness=1e-3f) const : Add ContainsConvex(float3/etc.). See RTCD p. 202. Add Contains(Circle/Disc). - Member
[Polygon::Contains2D] (const [float2] &localSpacePoint) const : Add Contains2D(Circle/Disc/Triangle/Polygon). - Member
[Polygon::Intersects] (const [Capsule] &capsule) const : Optimize. - Member
[Polygon::Intersects] (const [Sphere] &sphere) const : Optimize. - Member
[Polygon::Intersects] (const [Line] &line) const : Add Intersects(Circle/Disc). - Member
[Polygon::MapTo2D] (const [float3] &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::ToPolyhedron] () const : Add ToPolyhedron(float polygonThickness) - Member
[Polyhedron::ClosestPoint] (const [float3] &point) const : Add ClosestPoint(Line/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polyhedron::ClosestPointConvex] (const [float3] &point) const : Add ClosestPointConvex(Line/LineSegment/Ray/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Polyhedron::Contains] (const [float3] &point) const : Add Contains(Circle/Disc/Sphere/Capsule). - Member
[Polyhedron::ContainsConvex] (const [float3] &point) const : Add ContainsConvex(Polygon/AABB/OBB/Frustum/Polyhedron/Circle/Disc/Sphere/Capsule). - Member
[Polyhedron::Distance] (const [float3] &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 [AABB] &aabb) const : This is a naive test. Implement a faster version. - Member
[Polyhedron::Intersects] (const [Polyhedron] &polyhedron) const : Implement a more efficient algorithm. - Member
[Polyhedron::Intersects] (const [Frustum] &frustum) const : This is a naive test. Implement a faster version. - Member
[Polyhedron::Intersects] (const [LineSegment] &lineSegment) const : Add Intersects(Circle/Disc). - Member
[Polyhedron::Intersects] (const [OBB] &obb) const : This is a naive test. Implement a faster version. - 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::MinimalEnclosingAABB] () const : Add MinimalEnclosingSphere() and MinimalEnclosingOBB(). - Member
[Polyhedron::SurfaceArea] () const : Optimize temporary copies. - Member
[Polyhedron::Volume] () const : Optimize temporary copies. - Member
[Polynomial::SolveCubic] (float a, float b, float c, float d, float &root1, float &root2, float &root3): Implement. - Member
[Polynomial::SolveQuadratic] (float a, float b, float c, float &root1, float &root2): numerical float issues: catastrophic cancellation can occur in the subtraction. - Member
[Polynomial::SolveQuartic] (float a, float b, float c, float d, float &root1, float &root2, float &root3, float &root4): Implement. - Member
[Quat::ToEulerXYX] () const : the following could be heavily optimized. Don't route through [float3x3] conversion. - Member
[Ray::IntersectsDisc] (const [Circle] &disc) const : This signature will be moved to bool Intersects(const Disc &disc) const; - Member
[SetIdentity3x3] (Matrix &m): Clean this up, or remove if unused completely. -jj. - Member
[Sphere::ClosestPoint] (const [float3] &point) const : Add [Sphere::ClosestPoint](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). - Member
[Sphere::Contains] (const [float3] &point) const : Add [Sphere::Contains](Circle/Disc). - Member
[Sphere::Distance] (const [float3] &point) const : Add [Sphere::Distance](Polygon/Circle/Disc/Frustum/Polyhedron). - Member
[Sphere::Enclose] (const [float3] *pointArray, int numPoints): This might not be very optimal at all. Perhaps better to enclose the farthest point first. - Member
[Sphere::Enclose] (const [LineSegment] &lineSegment): This might not be very optimal at all. Perhaps better to enclose the farthest point first. - Member
[Sphere::Enclose] (const [AABB] &aabb): This might not be very optimal at all. Perhaps better to enclose the farthest point first. - Member
[Sphere::Enclose] (const [OBB] &obb): This might not be very optimal at all. Perhaps better to enclose the farthest point first. - Member
[Sphere::Enclose] (const [float3] &point): Add [Sphere::Enclose](Triangle/Polygon/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, float *outU, float *outV, float *outD) const : Add ClosestPoint(Ray/Plane/Polygon/Circle/Disk/AABB/OBB/Sphere/Capsule/Frustum/Polyhedron). The Triangle-Line code is currently untested. Run tests to ensure the following code works properly. Add optimized float3x3::InverseSymmetric(). - Member
[Triangle::ClosestPoint] (const [LineSegment] &lineSegment, [float3] *otherPt) const : The Triangle-LineSegment test is naive. 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 [float3] &point, float triangleThickness=1e-3f) 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 [float3] &point) const : Add [Triangle::Distance](Line/Ray/LineSegment/Plane/Triangle/Polygon/Circle/Disc/AABB/OBB/Capsule/Frustum/Polyhedron). - Member
[Triangle::Intersects] (const [AABB] &aabb) const : The Triangle-AABB intersection test can be greatly optimized by manually unrolling loops, trivial math and by avoiding unnecessary copying. - Member
[Triangle::RandomPointInside] ([LCG] &rng) const : rng.Float() returns [0,1[, but to be completely uniform, we'd need [0,1] here.