Developer Documentation

Classes | Typedefs | Functions
ACG::Geometry Namespace Reference

## Classes
class | Plane
class | PlaneT
class | QuadricT

## Typedefs
typedef PlaneT< float > | Planef
typedef PlaneT< double > | Planed
typedef QuadricT< float > | Quadricf
| Quadric using floats.
typedef QuadricT< double > | Quadricd
| Quadric using double.

## Functions
template<typename Scalar >
bool | edgeConvexPolygonIntersection (std::vector< VectorT< Scalar, 3 > > _polygon_points, VectorT< Scalar, 3 > _v0, VectorT< Scalar, 3 > _v1, VectorT< Scalar, 3 > &_result)
| Get intersection point of a ray and a convex polygon. More...
template<class Vec >
Vec::value_type | distPointTriangleSquared (const Vec &_p, const Vec &_v0, const Vec &_v1, const Vec &_v2, Vec &_nearestPoint, bool _stable)
template<typename Scalar >
bool | rotationOfTwoVectors (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, VectorT< Scalar, 3 > &_axis, Scalar &_angle, bool _degree=true)
| Get rotation axis and signed angle of rotation between two vectors. More...
template<typename Scalar >
bool | circumCenter (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2, const VectorT< Scalar, 3 > &_v3, VectorT< Scalar, 3 > &_result)
| return circumcenter of tetrahedron (_v0,_v1,_v2,_v3)
template<typename Scalar >
VectorT< Scalar, 3 > | perpendicular (const VectorT< Scalar, 3 > &_v)
| find a vector that's perpendicular to _v More...
template<typename Scalar >
bool | lineIntersection (const VectorT< Scalar, 2 > &_v0, const VectorT< Scalar, 2 > &_v1, const VectorT< Scalar, 2 > &_v2, const VectorT< Scalar, 2 > &_v3, Scalar &_t1, Scalar &_t2)
| intersect two line segments (_v0,_v1) and (_v2,_v3)
template<typename Vec >
bool | triangleIntersection (const Vec &_o, const Vec &_dir, const Vec &_v0, const Vec &_v1, const Vec &_v2, typename Vec::value_type &_t, typename Vec::value_type &_u, typename Vec::value_type &_v)
| Intersect a ray and a triangle. More...
template<typename Vec >
bool | axisAlignedBBIntersection (const Vec &_o, const Vec &_dir, const Vec &_bbmin, const Vec &_bbmax, typename Vec::value_type &_t0, typename Vec::value_type &_t1)
| Intersect a ray and an axis aligned bounding box. More...
template<typename Scalar >
Scalar | circumRadiusSquared (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2, const VectorT< Scalar, 3 > &_v3)
| return squared radius of circumcircle of tetrahedron (_v0,_v1,_v2,_v3)
template<typename Scalar >
Scalar | circumRadius (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2, const VectorT< Scalar, 3 > &_v3)
| return radius of circumcircle of tetrahedron (_v0,_v1,_v2,_v3)
template<typename Scalar >
Scalar | pointLineOrientation (const VectorT< Scalar, 2 > &_p, const VectorT< Scalar, 2 > &_v0, const VectorT< Scalar, 2 > &_v1)
| orientation of point _p w.r.t. line through _v0,_v1 in 2D
template<typename Scalar >
bool | isCCW (const VectorT< Scalar, 2 > &_v0, const VectorT< Scalar, 2 > &_v1, const VectorT< Scalar, 2 > &_v2)
| are 3 vertices in counterclockwise order? in 2D
template<typename Scalar >
bool | isCW (const VectorT< Scalar, 2 > &_v0, const VectorT< Scalar, 2 > &_v1, const VectorT< Scalar, 2 > &_v2)
| are 3 vertices in clockwise order? in 2D
template<typename Vector >
Vector | closestPointLineSegment (Vector x, Vector p1, Vector p2)
template<typename Vector >
Vector | closestPointTri (Vector p, Vector a, Vector b, Vector c)
template<typename VectorT , typename ValueT >
ValueT | getFullangle (VectorT _vector1, VectorT _vector2, const VectorT &_normal, bool &_skip)
template<typename ValueT >
ValueT | angleDist (const ValueT &angle0, const ValueT &angle1)
template<typename ValueT >
ValueT | getAngle (const ValueT &_cos, const ValueT &_sin)
template<typename ValueT >
ValueT | radToDeg (const ValueT &_angle)
template<typename ValueT >
ValueT | degToRad (const ValueT &_angle)
bool | isNan (double x)
| Return false if x is not a number.
Triangle Functions 3-Dimensional
template<typename Scalar >
bool | baryCoord (const VectorT< Scalar, 3 > &_p, const VectorT< Scalar, 3 > &_u, const VectorT< Scalar, 3 > &_v, const VectorT< Scalar, 3 > &_w, VectorT< Scalar, 3 > &_result)
template<typename Scalar >
bool | circumCenter (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2, VectorT< Scalar, 3 > &_result)
| return circumcenter of triangle (_v0,_v1,_v2)
template<typename Scalar >
Scalar | circumRadiusSquared (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2)
| return squared radius of circumcircle of triangle (_v0,_v1,_v2)
template<class VectorT >
int | isObtuse (const VectorT &_p0, const VectorT &_p1, const VectorT &_p2)
template<typename Scalar >
bool | minSphere (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2, VectorT< Scalar, 3 > &_center, Scalar &_radius)
| construct min. enclosing sphere
template<typename Scalar >
Scalar | minRadiusSquared (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2)
| return squared radius of min. enclosing circle of triangle (_v0,_v1,_v2)
template<typename Scalar >
Scalar | minRadius (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2)
| return radius of min. enclosing circle of triangle (_v0,_v1,_v2)
template<typename Scalar >
Scalar | circumRadius (const VectorT< Scalar, 3 > &_v0, const VectorT< Scalar, 3 > &_v1, const VectorT< Scalar, 3 > &_v2)
| return radius of circumcircle of triangle (_v0,_v1,_v2)
Triangle Functions N-Dimensional
template<class Vec >
Vec::value_type | triangleAreaSquared (const Vec &_v0, const Vec &_v1, const Vec &_v2)
| return squared area of triangle (_v0, _v1, _v2) More...
template<typename Scalar , int N>
Scalar | aspectRatio (const VectorT< Scalar, N > &_v0, const VectorT< Scalar, N > &_v1, const VectorT< Scalar, N > &_v2)
| return aspect ratio (length/height) of triangle More...
template<typename Scalar , int N>
Scalar | roundness (const VectorT< Scalar, N > &_v0, const VectorT< Scalar, N > &_v1, const VectorT< Scalar, N > &_v2)
| return roundness of triangle: 1=equilateral, 0=colinear More...
template<class Vec >
Vec::value_type | triangleArea (const Vec &_v0, const Vec &_v1, const Vec &_v2)
| return area of triangle (_v0, _v1, _v2) More...
Distance Functions ( N-Dimensional )
template<class Vec >
Vec::value_type | distPointLineSquared (const Vec &_p, const Vec &_v0, const Vec &_v1, Vec *_min_v=0)
| squared distance from point _p to line segment (_v0,_v1) More...
template<class Vec >
Vec::value_type | distPointTriangleSquared (const Vec &_p, const Vec &_v0, const Vec &_v1, const Vec &_v2, Vec &_nearestPoint)
| squared distance from point _p to triangle (_v0, _v1, _v2)
template<class Vec >
Vec::value_type | distPointTriangleSquaredStable (const Vec &_p, const Vec &_v0, const Vec &_v1, const Vec &_v2, Vec &_nearestPoint)
| squared distance from point _p to triangle (_v0, _v1, _v2) More...
template<typename VectorT , typename ValueT >
ValueT | distPointPlane (const VectorT &_porigin, const VectorT &_pnormal, const VectorT &_point)
| Checks the distance from a point to a plane. More...
template<class Vec >
Vec::value_type | distPointLine (const Vec &_p, const Vec &_v0, const Vec &_v1, Vec *_min_v=0)
| Compute distance from point to line segment. More...
template<class Vec >
Vec::value_type | distPointTriangle (const Vec &_p, const Vec &_v0, const Vec &_v1, const Vec &_v2, Vec &_nearestPoint)
| distance from point _p to triangle (_v0, _v1, _v2)
template<class Vec >
Vec::value_type | distPointTriangleStable (const Vec &_p, const Vec &_v0, const Vec &_v1, const Vec &_v2, Vec &_nearestPoint)
| distance from point _p to triangle (_v0, _v1, _v2) More...
Distance Functions ( 3-Dimensional )
template<typename Scalar >
Scalar | distLineLineSquared (const VectorT< Scalar, 3 > &_v00, const VectorT< Scalar, 3 > &_v01, const VectorT< Scalar, 3 > &_v10, const VectorT< Scalar, 3 > &_v11, VectorT< Scalar, 3 > *_min_v0=0, VectorT< Scalar, 3 > *_min_v1=0, bool _fastApprox=false)
| squared distance of lines (_v00, _v01) and (_v10, _v11)
template<typename Scalar >
Scalar | distLineLine (const VectorT< Scalar, 3 > &_v00, const VectorT< Scalar, 3 > &_v01, const VectorT< Scalar, 3 > &_v10, const VectorT< Scalar, 3 > &_v11, VectorT< Scalar, 3 > *_min_v0=0, VectorT< Scalar, 3 > *_min_v1=0)
| distance of lines (_v00, _v01) and (_v10, _v11)
Projection Functions ( N-Dimensional )
template<typename VectorT >
VectorT | projectToEdge (const VectorT &_start, const VectorT &_end, const VectorT &_point)
template<typename VectorT >
VectorT | projectToPlane (const VectorT &_porigin, const VectorT &_pnormal, const VectorT &_point)
| projects a point to a plane More...
Triangle Functions (2D Only!!)
template<typename Scalar >
bool | baryCoord (const VectorT< Scalar, 2 > &_p, const VectorT< Scalar, 2 > &_u, const VectorT< Scalar, 2 > &_v, const VectorT< Scalar, 2 > &_w, VectorT< Scalar, 3 > &_result)
| return circumcenter of triangle (_v0,_v1,_v2) More...
template<typename Scalar >
bool | circumCenter (const VectorT< Scalar, 2 > &_v0, const VectorT< Scalar, 2 > &_v1, const VectorT< Scalar, 2 > &_v2, VectorT< Scalar, 2 > &_result)
| return circumcenter of triangle (_v0,_v1,_v2) More...
template<typename Scalar >
bool | isInTriangle (const VectorT< Scalar, 2 > &_p, const VectorT< Scalar, 2 > &_u, const VectorT< Scalar, 2 > &_v, const VectorT< Scalar, 2 > &_w)
| is point _p in triangle (_v0,_v1,_v2) in 2D

## Detailed Description

This namespace holds some geometric types as well as geometry algorithms.

## Function Documentation

## ◆ angleDist()

template<typename ValueT >

ValueT ACG::Geometry::angleDist | ( | const ValueT & | angle0,
|  | const ValueT & | angle1
| ) |  |
| inline

Calculate the difference between two angles ( minimum distance )

Parameters

  angle0 | angle1
  angle1 | angle2

Returns
  The difference between the angles (0..PI)

Definition at line 113 of file AlgorithmsAngleT_impl.hh.

## ◆ aspectRatio()

template<typename Scalar , int N>

Scalar ACG::Geometry::aspectRatio | ( | const VectorT< Scalar, N > & | _v0,
|  | const VectorT< Scalar, N > & | _v1,
|  | const VectorT< Scalar, N > & | _v2
| ) |  |

return aspect ratio (length/height) of triangle

Parameters

  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangl

Definition at line 1256 of file Algorithms.cc.

## ◆ axisAlignedBBIntersection()

template<typename Vec >

bool ACG::Geometry::axisAlignedBBIntersection | ( | const Vec & | _o,
|  | const Vec & | _dir,
|  | const Vec & | _bbmin,
|  | const Vec & | _bbmax,
|  | typename Vec::value_type & | _t0,
|  | typename Vec::value_type & | _t1
| ) |  |

Intersect a ray and an axis aligned bounding box.

Computes the intersection point between a ray and an axis aligned bounding box

Parameters

  _o | Origin of the ray
  _dir | direction vector of the ray
  _bbmin | lower left front corner of the bounding box
  _bbmax | upper right back corner of the bounding box
  _t0 | if there was an intersection, this value marks the entry point
  _t1 | if there was an intersection, this value marks the exit point

Returns
  true if an intersection was found

Definition at line 1359 of file Algorithms.cc.

## ◆ baryCoord() [1/2]

template<typename Scalar >

bool ACG::Geometry::baryCoord | ( | const VectorT< Scalar, 3 > & | _p,
|  | const VectorT< Scalar, 3 > & | _u,
|  | const VectorT< Scalar, 3 > & | _v,
|  | const VectorT< Scalar, 3 > & | _w,
|  | VectorT< Scalar, 3 > & | _result
| ) |  |

barycentric coord of _p w.r.t. (_u,_v,_w) in 3D _p has to lie in plane (_u,_v,_w)

Definition at line 83 of file Algorithms.cc.

## ◆ baryCoord() [2/2]

template<typename Scalar >

bool ACG::Geometry::baryCoord | ( | const VectorT< Scalar, 2 > & | _p,
|  | const VectorT< Scalar, 2 > & | _u,
|  | const VectorT< Scalar, 2 > & | _v,
|  | const VectorT< Scalar, 2 > & | _w,
|  | VectorT< Scalar, 3 > & | _result
| ) |  |

return circumcenter of triangle (_v0,_v1,_v2)

barycentric coord of _p w.r.t. (_u,_v,_w) in 2D

Definition at line 1173 of file Algorithms.cc.

## ◆ circumCenter()

template<typename Scalar >

bool ACG::Geometry::circumCenter | ( | const VectorT< Scalar, 2 > & | _v0,
|  | const VectorT< Scalar, 2 > & | _v1,
|  | const VectorT< Scalar, 2 > & | _v2,
|  | VectorT< Scalar, 2 > & | _result
| ) |  |

return circumcenter of triangle (_v0,_v1,_v2)

barycentric coord of _p w.r.t. (_u,_v,_w) in 2D

Definition at line 1226 of file Algorithms.cc.

## ◆ degToRad()

template<typename ValueT >

ValueT ACG::Geometry::degToRad | ( | const ValueT & | _angle | ) |
| inline

Convert angle from degree to radians

Parameters

  _angle | in degree

Returns
  angle in radians

Definition at line 152 of file AlgorithmsAngleT_impl.hh.

## ◆ distPointLine()

template<class Vec >

Vec::value_type ACG::Geometry::distPointLine | ( | const Vec & | _p,
|  | const Vec & | _v0,
|  | const Vec & | _v1,
|  | Vec * | _min_v = `0`
| ) |  |

Compute distance from point to line segment.

Compute the distance from a point p to a line segment and possibly return closest point on segment

Parameters

  _p | Point to test
  _v0 | Start of line segment
  _v1 | End of line segment
  _min_v | Pointer to vector, to get the closest point or 0 if it's not required

Returns
  Distance to line segment

Definition at line 288 of file Algorithms.hh.

## ◆ distPointLineSquared()

template<class Vec >

Vec::value_type ACG::Geometry::distPointLineSquared | ( | const Vec & | _p,
|  | const Vec & | _v0,
|  | const Vec & | _v1,
|  | Vec * | _min_v = `0`
| ) |  |

squared distance from point _p to line segment (_v0,_v1)

Parameters

  _p | Point to test
  _v0 | Start of line segment
  _v1 | End of line segment
  _min_v | Pointer to vector, to get the closest point or 0 if it's not required

Returns
  Distance to line segment

Definition at line 290 of file Algorithms.cc.

## ◆ distPointPlane()

template<typename VectorT , typename ValueT >

ValueT ACG::Geometry::distPointPlane | ( | const VectorT & | _porigin,
|  | const VectorT & | _pnormal,
|  | const VectorT & | _point
| ) |  |
| inline

Checks the distance from a point to a plane.

Parameters

  _porigin | Planes origin
  _pnormal | Plane normal ( has to be normalized!)
  _point | point to test

Returns
  distance

Definition at line 862 of file Algorithms.cc.

## ◆ distPointTriangleSquaredStable()

template<class Vec >

Vec::value_type ACG::Geometry::distPointTriangleSquaredStable | ( | const Vec & | _p,
|  | const Vec & | _v0,
|  | const Vec & | _v1,
|  | const Vec & | _v2,
|  | Vec & | _nearestPoint
| ) |  |

squared distance from point _p to triangle (_v0, _v1, _v2)

In the stable version the distance to the longest edge is returned if the triangle is degenerate.

Parameters

  _p | point to test against triangle
  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangle

Returns
  Computed distance

Definition at line 466 of file Algorithms.cc.

## ◆ distPointTriangleStable()

template<class Vec >

Vec::value_type ACG::Geometry::distPointTriangleStable | ( | const Vec & | _p,
|  | const Vec & | _v0,
|  | const Vec & | _v1,
|  | const Vec & | _v2,
|  | Vec & | _nearestPoint
| ) |  |

distance from point _p to triangle (_v0, _v1, _v2)

In the stable version the distance to the longest edge is returned if the triangle is degenerate.

Parameters

  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangle

Returns
  Computed distance

Definition at line 345 of file Algorithms.hh.

## ◆ edgeConvexPolygonIntersection()

template<typename Scalar >

bool ACG::Geometry::edgeConvexPolygonIntersection | ( | std::vector< VectorT< Scalar, 3 > > | _polygon_points,
|  | VectorT< Scalar, 3 > | _v0,
|  | VectorT< Scalar, 3 > | _v1,
|  | VectorT< Scalar, 3 > & | _result
| ) |  |

Get intersection point of a ray and a convex polygon.

Gets two vertices, _v0 and _v1, and a convex polygon defined by its vertices stored in _polygon_points Computes the intersection point of the ray defined by _v0 and _v1 and stores it to _result Returns true if the intersection point lies inside the polygon

Parameters

  _v0 | The first vertex of a ray
  _v1 | The second vertex if a ray
  _polygon_points | vector of the points bounding the polygon
  _result | contains the intersection point after the computation

Definition at line 172 of file Algorithms.cc.

## ◆ getAngle()

template<typename ValueT >

ValueT ACG::Geometry::getAngle | ( | const ValueT & | _cos,
|  | const ValueT & | _sin
| ) |  |
| inline

Calculate the correct 2D angle if cos and sin of the angle are given This function calculates based on the signs of the acos and asin of the given angles, in which quadrant the angle is and returns the full angle in radians

Parameters

  _cos | cos of angle
  _sin | sin of angle

Returns
  angle

Definition at line 121 of file AlgorithmsAngleT_impl.hh.

## ◆ getFullangle()

template<typename VectorT , typename ValueT >

ValueT ACG::Geometry::getFullangle | ( | VectorT | _vector1,
|  | VectorT | _vector2,
|  | const VectorT & | _normal,
|  | bool & | _skip
| ) |  |

Return a fully parametrized angle

Parameters

  _vector1 | vector pointing away from center, angle = 0
  _vector2 | vector for which the angle should be calculated
  _normal | the normal used to compute if vector2 is left or right of vecor1
  _skip | Flag to catch nan. If true nan occurred and value should not be used

Returns
  the angle (0 .. 2 * PI)

Definition at line 76 of file AlgorithmsAngleT_impl.hh.

## ◆ isObtuse()

template<class VectorT >

int ACG::Geometry::isObtuse | ( | const VectorT & | _p0,
|  | const VectorT & | _p1,
|  | const VectorT & | _p2
| ) |  |

test angles in triangle return 0 if all smaller than 90? return 1 if angle at _p0 ist greater than 90? return 2 if angle at _p1 ist greater than 90? return 3 if angle at _p2 ist greater than 90?

Definition at line 1003 of file Algorithms.cc.

## ◆ perpendicular()

template<typename Scalar >

VectorT< Scalar, 3 > ACG::Geometry::perpendicular | ( | const VectorT< Scalar, 3 > & | _v | ) |

find a vector that's perpendicular to _v

This function takes a vector and generates a new arbitrary vector that is perpendicular to the input vector.

Parameters

  _v | Input vector

Returns
  Perpendicular vector

Definition at line 1152 of file Algorithms.cc.

## ◆ projectToEdge()

template<typename VectorT >

VectorT ACG::Geometry::projectToEdge | ( | const VectorT & | _start,
|  | const VectorT & | _end,
|  | const VectorT & | _point
| ) |  |

project one point to an edge. If its projection is not on the edge itself, the start or the endpoint is returned

Parameters

  _start | beginning of edge
  _end | end of the edge
  _point | point to be projected

Definition at line 874 of file Algorithms.cc.

## ◆ projectToPlane()

template<typename VectorT >

VectorT ACG::Geometry::projectToPlane | ( | const VectorT & | _porigin,
|  | const VectorT & | _pnormal,
|  | const VectorT & | _point
| ) |  |
| inline

projects a point to a plane

Parameters

  _porigin | Planes origin
  _pnormal | Plane normal ( has to be normalized! )
  _point | point to project

Returns
  projected point

Definition at line 894 of file Algorithms.cc.

## ◆ radToDeg()

template<typename ValueT >

ValueT ACG::Geometry::radToDeg | ( | const ValueT & | _angle | ) |
| inline

Convert angle from radians to degree

Parameters

  _angle | in radians

Returns
  angle in degree

Definition at line 145 of file AlgorithmsAngleT_impl.hh.

## ◆ rotationOfTwoVectors()

template<typename Scalar >

bool ACG::Geometry::rotationOfTwoVectors | ( | const VectorT< Scalar, 3 > & | _v0,
|  | const VectorT< Scalar, 3 > & | _v1,
|  | VectorT< Scalar, 3 > & | _axis,
|  | Scalar & | _angle,
|  | bool | _degree = `true`
| ) |  |

Get rotation axis and signed angle of rotation between two vectors.

Get two vectors, _v0 and _v1, and compute rotation axis _v0 % _v1 as well the angle between _v0 and _v1. Note that the angle is always negative. We consider the rotation to be performed from _v0 to _v1. The angle is given in degree if not explicitly demanded in radiant (pass false as fifth parameter).

Parameters

  _v0 | The first vector
  _v1 | The second vector
  _axis | A reference to a vector in which the rotation axis is stored
  _angle | A reference to a scalar type in which the signed angle is stored ( in degree)
  _degree | Indicates whether the angle should be given in degree or radiant

Definition at line 963 of file Algorithms.cc.

## ◆ roundness()

template<typename Scalar , int N>

Scalar ACG::Geometry::roundness | ( | const VectorT< Scalar, N > & | _v0,
|  | const VectorT< Scalar, N > & | _v1,
|  | const VectorT< Scalar, N > & | _v2
| ) |  |

return roundness of triangle: 1=equilateral, 0=colinear

Parameters

  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangl

Definition at line 1292 of file Algorithms.cc.

## ◆ triangleArea()

template<class Vec >

Vec::value_type ACG::Geometry::triangleArea | ( | const Vec & | _v0,
|  | const Vec & | _v1,
|  | const Vec & | _v2
| ) |  |

return area of triangle (_v0, _v1, _v2)

Parameters

  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangl

Definition at line 595 of file Algorithms.hh.

## ◆ triangleAreaSquared()

template<class Vec >

Vec::value_type ACG::Geometry::triangleAreaSquared | ( | const Vec & | _v0,
|  | const Vec & | _v1,
|  | const Vec & | _v2
| ) |  |

return squared area of triangle (_v0, _v1, _v2)

Parameters

  _v0 | First point of triangle
  _v1 | Second point of triangle
  _v2 | Third point of triangl

Definition at line 163 of file Algorithms.cc.

## ◆ triangleIntersection()

template<typename Vec >

bool ACG::Geometry::triangleIntersection | ( | const Vec & | _o,
|  | const Vec & | _dir,
|  | const Vec & | _v0,
|  | const Vec & | _v1,
|  | const Vec & | _v2,
|  | typename Vec::value_type & | _t,
|  | typename Vec::value_type & | _u,
|  | typename Vec::value_type & | _v
| ) |  |

Intersect a ray and a triangle.

Computes the intersection point between a ray and a triangle. The orientation of the triangle does not matter. The distance returned in t will be negative if the triangle is not in the direction given but in the opposite direction.

Parameters

  _o | origin of the ray
  _dir | direction vector of the ray
  _v0 | first point of the triangle
  _v1 | second point of the triangle
  _v2 | third point of the triangle
  _t | returned distance from the origin to the intersection, in units of _dir ( negative if before origin!)
  _u | returned first barycentric coordinate of the intersection point in the triangle
  _v | returned second barycentric coordinate of the intersection point in the triangle

Returns
  true if an intersection was found

Definition at line 1307 of file Algorithms.cc.