Library of Assembled Shared Sources
|
A very simple 3D polygon :) More...
#include <triangle_3d.h>
Public Member Functions | |
Triangle3D () | |
constructs an empty triangle. | |
Triangle3D (const TPoint &iA, const TPoint &iB, const TPoint &iC) | |
Constructs a triangle through three points in positive sequence. | |
const TPoint & | operator[] (size_t iIndexOfVertex) const |
return vertex of polygon by its index, not wrapped, no bounds check. | |
TPoint & | operator[] (size_t iIndexOfVertex) |
return vertex of polygon by its index, not wrapped, no bounds check. | |
const TPoint & | at (int iIndexOfVertex) const |
return vertex of polygon by its index, but wrap around the bounds. | |
TPoint & | at (int iIndexOfVertex) |
return vertex of polygon by its index, but wrap around the bounds. | |
const TLineSegment | edge (int iIndexOfTailVertex) const |
return the edge of the polygon between vertices at(iIndex) and at(iIndex + 1). | |
const TVector | vector (int iIndexOfTailVertex) const |
return the vector between vertices at(iIndex) and at(iIndex + 1)\ | |
const TPlane | plane () const |
return support plane of polygon. | |
bool | isEmpty () const |
return true if polygon has no vertices | |
size_t | size () const |
return number of vertices | |
const TValue | squaredArea () const |
returns squared area of triangle to avoid the square root. | |
const TValue | area () const |
return area of the polygons surface. | |
const TValue | perimeter () const |
return sum of the lengths of all edges | |
const TPointH | vertexCentroid () const |
return the barycenter of all vertices. | |
const TPointH | surfaceCentroid () const |
return the centroid of the filled polygon. | |
bool | isSimple () const |
return true if polygon is simple, false if not. | |
bool | isConvex () const |
return true if polygon is convex, false if not. | |
bool | isReflex (int iIndexOfVertex) const |
return true if inner angle of vertex is reflex (is > 180 degrees). | |
Related Symbols | |
(Note that these are not member symbols.) | |
template<typename T, class NP, class PP> | |
Result | intersect (const Triangle3D< T > &triangle, const Ray3D< T, NP, PP > &ray, T &t, const T &tMin=T()) |
Find the intersection of a ray and a triangle by their parameter t on the ray. | |
template<typename T, class NP, class PP> | |
Result | intersect (const Triangle3D< T > &triangle, const Ray3D< T, NP, PP > &ray, T &u, T &v, T &t, const T &tMin=T()) |
Find the intersection of a ray and a triangle by their parameter t on the ray and it's coordinates (u,v) on the triangle. | |
A very simple 3D polygon :)
Definition at line 63 of file triangle_3d.h.
lass::prim::Triangle3D< T >::Triangle3D | ( | ) |
constructs an empty triangle.
all vertices are (0, 0) and thus equal.
Definition at line 60 of file triangle_3d.inl.
const Triangle3D< T >::TPoint & lass::prim::Triangle3D< T >::operator[] | ( | size_t | iIndexOfVertex | ) | const |
return vertex of polygon by its index, not wrapped, no bounds check.
Definition at line 82 of file triangle_3d.inl.
Triangle3D< T >::TPoint & lass::prim::Triangle3D< T >::operator[] | ( | size_t | iIndexOfVertex | ) |
return vertex of polygon by its index, not wrapped, no bounds check.
Definition at line 94 of file triangle_3d.inl.
const Triangle3D< T >::TPoint & lass::prim::Triangle3D< T >::at | ( | int | iIndexOfVertex | ) | const |
return vertex of polygon by its index, but wrap around the bounds.
this->at(-1) will return the same vertex as this->at(this->size() - 1);
Definition at line 106 of file triangle_3d.inl.
Triangle3D< T >::TPoint & lass::prim::Triangle3D< T >::at | ( | int | iIndexOfVertex | ) |
return vertex of polygon by its index, but wrap around the bounds.
this->at(-1) will return the same vertex as this->at(this->size() - 1);
Definition at line 119 of file triangle_3d.inl.
const Triangle3D< T >::TLineSegment lass::prim::Triangle3D< T >::edge | ( | int | iIndexOfTailVertex | ) | const |
return the edge of the polygon between vertices at(iIndex) and at(iIndex + 1).
Definition at line 132 of file triangle_3d.inl.
References at().
const Triangle3D< T >::TVector lass::prim::Triangle3D< T >::vector | ( | int | iIndexOfTailVertex | ) | const |
return the vector between vertices at(iIndex) and at(iIndex + 1)\
Definition at line 143 of file triangle_3d.inl.
References at().
const Triangle3D< T >::TPlane lass::prim::Triangle3D< T >::plane | ( | ) | const |
return support plane of polygon.
Definition at line 154 of file triangle_3d.inl.
bool lass::prim::Triangle3D< T >::isEmpty | ( | ) | const |
return true if polygon has no vertices
Definition at line 166 of file triangle_3d.inl.
size_t lass::prim::Triangle3D< T >::size | ( | ) | const |
return number of vertices
Definition at line 176 of file triangle_3d.inl.
const Triangle3D< T >::TValue lass::prim::Triangle3D< T >::squaredArea | ( | ) | const |
returns squared area of triangle to avoid the square root.
Definition at line 188 of file triangle_3d.inl.
Referenced by area().
const Triangle3D< T >::TValue lass::prim::Triangle3D< T >::area | ( | ) | const |
return area of the polygons surface.
The area of a surface is the amount of material needed to "cover" it completely, Eric W. Weisstein. "Area." From MathWorld–A Wolfram Web Resource. http://mathworld.wolfram.com/Area.html
Definition at line 200 of file triangle_3d.inl.
References squaredArea().
const Triangle3D< T >::TValue lass::prim::Triangle3D< T >::perimeter | ( | ) | const |
return sum of the lengths of all edges
Definition at line 211 of file triangle_3d.inl.
const Triangle3D< T >::TPointH lass::prim::Triangle3D< T >::vertexCentroid | ( | ) | const |
return the barycenter of all vertices.
The barycenter is the homogenous sum of all vertices.
Definition at line 224 of file triangle_3d.inl.
Referenced by surfaceCentroid().
|
inline |
return the centroid of the filled polygon.
Eric W. Weisstein. "Geometric Centroid." From MathWorld–A Wolfram Web Resource. http://mathworld.wolfram.com/GeometricCentroid.html
Definition at line 236 of file triangle_3d.inl.
References vertexCentroid().
bool lass::prim::Triangle3D< T >::isSimple | ( | ) | const |
return true if polygon is simple, false if not.
A polygon P is said to be simple (or Jordan) if the only points of the plane belonging to two polygon edges of P are the polygon vertices of P. Such a polygon has a well defined interior and exterior. Simple polygons are topologically equivalent to a disk., Eric W. Weisstein. "Simple Polygon." From MathWorld–A Wolfram Web Resource. http://mathworld.wolfram.com/SimplePolygon.html
In 3D, we test if the 2D mapping on the major axis is simple.
Definition at line 248 of file triangle_3d.inl.
bool lass::prim::Triangle3D< T >::isConvex | ( | ) | const |
return true if polygon is convex, false if not.
A planar polygon is convex if it contains all the line segments connecting any pair of its points. Thus, for example, a regular pentagon is convex, while an indented pentagon is not. A planar polygon that is not convex is said to be a concave polygon, Eric W. Weisstein. "Convex Polygon." From MathWorld–A Wolfram Web Resource. http://mathworld.wolfram.com/ConvexPolygon.html
A simple polygon is convex if all the cross products of adjacent edges will be the same sign (we ignore zero signs, only + or - are taken in account), a concave polygon will have a mixture of cross product signs.
A polygon with less than three vertices is always convex. A polygon with all colinear vertices is considered convex (not very usefull maybe, but convex).
Definition at line 260 of file triangle_3d.inl.
bool lass::prim::Triangle3D< T >::isReflex | ( | int | iIndexOfVertex | ) | const |
return true if inner angle of vertex is reflex (is > 180 degrees).
Definition at line 272 of file triangle_3d.inl.
|
Find the intersection of a ray and a triangle by their parameter t on the ray.
A maximum of two possible intersections with t > 0.
triangle | [in] the triangle |
ray | [in] the ray |
t | [out] the parameter of the intersection point > tMin. |
tMin | [in] the minimum t that may be returned as valid intersection. |
Definition at line 76 of file ray_3d_triangle_3d.h.
|
Find the intersection of a ray and a triangle by their parameter t on the ray and it's coordinates (u,v) on the triangle.
A maximum of two possible intersections with t > 0.
triangle | [in] the triangle |
ray | [in] the ray |
u | [out] the parameter of the intersection point on the triangle. |
v | [out] the parameter of the intersection point on the triangle. |
t | [out] the parameter of the intersection point > tMin. |
tMin | [in] the minimum t that may be returned as valid intersection. |
Definition at line 113 of file ray_3d_triangle_3d.h.