library of assembled shared sources

http://lass.cocamware.com

lass::prim::SimplePolygon2D< T, DegeneratePolicy > Class Template Reference

convex or concave polygon in 2D (not selfintersecting, no holes) More...

#include <simple_polygon_2d.h>


Data Structures

struct  Rebind

Public Types

enum  { dimension = TPoint::dimension }
typedef SimplePolygon2D< T,
NoDegenerate
TSelf
typedef DegeneratePolicy TDegeneratePolicy
typedef Point2D< T > TPoint
typedef Point2DH< T > TPointH
typedef TPoint::TVector TVector
typedef LineSegment2D< T > TLineSegment
typedef TPoint::TValue TValue
typedef TPoint::TParam TParam
typedef TPoint::TReference TReference
typedef TPoint::TConstReference TConstReference
typedef TPoint::TNumTraits TNumTraits

Public Member Functions

 SimplePolygon2D ()
template<typename InputIterator >
 SimplePolygon2D (InputIterator iFirstVertex, InputIterator iLastVertex)
const TPointoperator[] (size_t iIndexOfVertex) const
 return vertex of polygon by its index, not wrapped, no bounds check.
TPointoperator[] (size_t iIndexOfVertex)
 return vertex of polygon by its index, not wrapped, no bounds check.
const TPointat (int iIndexOfVertex) const
 return vertex of polygon by its index, but wrap around the bounds.
TPointat (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)\
void add (const TPoint &iVertex)
 add a point at the "end" of the vertex list.
void insert (int iIndexOfVertex, const TPoint &iVertex)
 insert a vertex at iIndex (so it will sit before the current at(iIndex)).
void erase (int iIndexOfVertex)
 remove the vertex at(iIndex)
const bool isEmpty () const
 return true if polygon has no vertices
const size_t size () const
 return number of vertices
const TValue signedArea () const
 return signed polygon area.
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.
const bool isSimple () const
 return true if polygon is simple, false if not.
const bool isConvex () const
 return true if polygon is convex, false if not.
const Orientation orientation () const
 return orientation of polygon.
const bool isReflex (int iIndexOfVertex) const
 return true if inner angle of vertex is reflex (is > 180 degrees).
const Side classify (const TPoint &iP) const
const bool contains (const TPoint &iP) const
 return true when a point is inside or on a polygon.
void flip ()
 flip orientation of polygon.
void fixDegenerate ()
 fixes degenerate polygons as far as possible.
const bool isValid () const
 a simple polygon is valid if it is not degenerate.

Private Types

typedef std::vector< TPointTVertices

Private Member Functions

const bool isInRange (int iIndexOfVertex) const
 return if index of vertex is in range of the std::vector

Private Attributes

TVertices vertices_

Related Functions

(Note that these are not member functions.)

template<typename T , class DP , class NP , class PP >
Result intersect (const SimplePolygon2D< T, DP > &polygon, const Ray2D< 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 DP >
io::XmlOStreamoperator<< (io::XmlOStream &ioOStream, const SimplePolygon2D< T, DP > &iPolygon)
template<typename T , class DP >
std::ostream & operator<< (std::ostream &ioOStream, const SimplePolygon2D< T, DP > &iPolygon)
template<typename T , class DP >
lass::io::MatlabOStreamoperator<< (lass::io::MatlabOStream &oOStream, const SimplePolygon2D< T, DP > &iPolygon)


Detailed Description

template<typename T, class DegeneratePolicy = NoDegenerate>
class lass::prim::SimplePolygon2D< T, DegeneratePolicy >

convex or concave polygon in 2D (not selfintersecting, no holes)

Author:
Bram de Greve [BdG]
Warning:
SimplePolygon2D only ASSUMES it's simple. there's no guarantee at any time. It's your own responsibility to keep it simple. We do it this way because it's just to costly to check it at every access to the polygon. However, we provide some methods to check it yourself.

Definition at line 73 of file simple_polygon_2d.h.


Member Typedef Documentation

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef SimplePolygon2D<T, NoDegenerate> lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TSelf

Definition at line 77 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef DegeneratePolicy lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TDegeneratePolicy

Definition at line 78 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef Point2D<T> lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TPoint

Definition at line 80 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef Point2DH<T> lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TPointH

Definition at line 81 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TVector lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TVector

Definition at line 82 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef LineSegment2D<T> lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TLineSegment

Definition at line 83 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TValue lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TValue

Definition at line 85 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TParam lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TParam

Definition at line 86 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TReference lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TReference

Definition at line 87 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TConstReference lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TConstReference

Definition at line 88 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef TPoint::TNumTraits lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TNumTraits

Definition at line 89 of file simple_polygon_2d.h.

template<typename T , class DegeneratePolicy = NoDegenerate>
typedef std::vector<TPoint> lass::prim::SimplePolygon2D< T, DegeneratePolicy >::TVertices [private]

Definition at line 139 of file simple_polygon_2d.h.


Member Enumeration Documentation

template<typename T , class DegeneratePolicy = NoDegenerate>
anonymous enum

Enumerator:
dimension 

Definition at line 91 of file simple_polygon_2d.h.


Constructor & Destructor Documentation

template<typename T , class DP >
lass::prim::SimplePolygon2D< T, DP >::SimplePolygon2D (  )  [inline]

Definition at line 57 of file simple_polygon_2d.inl.

template<typename T , class DP >
template<typename InputIterator >
lass::prim::SimplePolygon2D< T, DP >::SimplePolygon2D ( InputIterator  iFirstVertex,
InputIterator  iLastVertex 
) [inline]

Definition at line 66 of file simple_polygon_2d.inl.


Member Function Documentation

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TPoint & lass::prim::SimplePolygon2D< T, DP >::operator[] ( size_t  iIndexOfVertex  )  const [inline]

return vertex of polygon by its index, not wrapped, no bounds check.

Definition at line 77 of file simple_polygon_2d.inl.

References LASS_ASSERT, and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

template<typename T , class DP >
SimplePolygon2D< T, DP >::TPoint & lass::prim::SimplePolygon2D< T, DP >::operator[] ( size_t  iIndexOfVertex  )  [inline]

return vertex of polygon by its index, not wrapped, no bounds check.

Definition at line 89 of file simple_polygon_2d.inl.

References LASS_ASSERT, and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TPoint & lass::prim::SimplePolygon2D< T, DP >::at ( int  iIndexOfVertex  )  const [inline]

template<typename T , class DP >
SimplePolygon2D< T, DP >::TPoint & lass::prim::SimplePolygon2D< T, DP >::at ( int  iIndexOfVertex  )  [inline]

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);

Exceptions:
an exception is thrown if polygon is empty

Definition at line 119 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isEmpty(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isInRange(), LASS_ASSERT, LASS_ENFORCE, lass::num::mod(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TLineSegment lass::prim::SimplePolygon2D< T, DP >::edge ( int  iIndexOfTailVertex  )  const [inline]

return the edge of the polygon between vertices at(iIndex) and at(iIndex + 1).

Exceptions:
an exception is thrown if polygon has less than two vertices

Definition at line 135 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::at().

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isSimple().

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TVector lass::prim::SimplePolygon2D< T, DP >::vector ( int  iIndexOfTailVertex  )  const [inline]

template<typename T , class DP >
void lass::prim::SimplePolygon2D< T, DP >::add ( const TPoint iVertex  )  [inline]

add a point at the "end" of the vertex list.

this is almost the same as insert(0, iVertex) with the difference that add(iVertex) is also valid for empty polygons.

Definition at line 160 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

Referenced by lass::prim::SimplePolygon3D< T, PlaneEquationPolicy, PlaneNormalizingPolicy >::mapping(), and lass::spat::PlanarMesh::polygon().

template<typename T , class DP >
void lass::prim::SimplePolygon2D< T, DP >::insert ( int  iIndexOfVertex,
const TPoint iVertex 
) [inline]

template<typename T , class DP >
void lass::prim::SimplePolygon2D< T, DP >::erase ( int  iIndexOfVertex  )  [inline]

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isEmpty (  )  const [inline]

template<typename T , class DP >
const size_t lass::prim::SimplePolygon2D< T, DP >::size (  )  const [inline]

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TValue lass::prim::SimplePolygon2D< T, DP >::signedArea (  )  const [inline]

return signed polygon area.

The area of a convex polygon is defined to be positive if the points are arranged in a counterclockwise order, and negative if they are in clockwise order., Eric W. Weisstein. "Polygon Area." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/PolygonArea.html

Algorithm:
comp.graphics.algorithms Frequently Asked Questions: Subject 2.01: "How do I find the area of a polygon?" http://www.faqs.org/faqs/graphics/algorithms-faq/
Warning:
polygon must be simple accoring degenerate policy.

Definition at line 229 of file simple_polygon_2d.inl.

References lass::prim::perpDot(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), lass::stde::T, lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_, and lass::num::NumTraits< C >::zero.

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::area(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::fixDegenerate(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isReflex(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isValid().

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TValue lass::prim::SimplePolygon2D< T, DP >::area (  )  const [inline]

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

Warning:
polygon must be simple accoring DegeneratePolicy.

Definition at line 259 of file simple_polygon_2d.inl.

References lass::num::abs(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::signedArea().

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TValue lass::prim::SimplePolygon2D< T, DP >::perimeter (  )  const [inline]

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TPointH lass::prim::SimplePolygon2D< T, DP >::vertexCentroid (  )  const [inline]

return the barycenter of all vertices.

The vertex centroid is the homogenous sum of all vertices.

Warning:
for non-convex polygons, it's NOT guaranteed that this center is inside the polygon.

Definition at line 304 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::surfaceCentroid().

template<typename T , class DP >
const SimplePolygon2D< T, DP >::TPointH lass::prim::SimplePolygon2D< T, DP >::surfaceCentroid (  )  const [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

Algorithm:
comp.graphics.algorithms Frequently Asked Questions: Subject 2.02: "How can the centroid of a polygon be computed?" http://www.faqs.org/faqs/graphics/algorithms-faq/
Warning:
for non-convex polygons, it's NOT guaranteed that this center is inside the polygon.

Definition at line 331 of file simple_polygon_2d.inl.

References lass::prim::perpDot(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertexCentroid(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

Referenced by lass::spat::PlanarMesh::floodPolygon(), and lass::spat::PlanarMesh::floodPolygonCallback().

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isSimple (  )  const [inline]

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

A polygon with less than four vertices is always simple.

Warning:
this is a brute force test. we simple test for all edges if they are not intersecting Hence, this is O(n^2).

Definition at line 365 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::edge(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::intersect(), LASS_ASSERT, lass::prim::rNone, lass::prim::rOne, and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size().

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::fixDegenerate(), and lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isValid().

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isConvex (  )  const [inline]

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 cross products of colinear edges, 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 coincident. vertices is considered convex if DegeneratePolicy allows this.

Warning:
polygon must be simple and should not have coincident vertices, according DegeneratePolicy.

Definition at line 420 of file simple_polygon_2d.inl.

References LASS_ASSERT, lass::prim::perpDot(), lass::num::sign(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vector(), and lass::num::NumTraits< C >::zero.

Referenced by lass::prim::triangulate().

template<typename T , class DP >
const Orientation lass::prim::SimplePolygon2D< T, DP >::orientation (  )  const [inline]

return orientation of polygon.

Warning:
polygon must be simple accoring DegeneratePolicy.

Definition at line 271 of file simple_polygon_2d.inl.

References lass::prim::oClockWise, lass::prim::oCounterClockWise, lass::prim::oInvalid, and lass::num::NumTraits< C >::zero.

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isReflex ( int  iIndexOfVertex  )  const [inline]

return true if inner angle of vertex is reflex (is > 180 degrees).

Reflect Angle: An angle more than 180°, Eric W. Weisstein. "Reflex Angle." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/ReflexAngle.html

test if signedArea() and perdDot(...) have different sign. if one of them is zero, it will return false by default.

Warning:
polygon must be simple accoring DegeneratePolicy.

Definition at line 465 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isEmpty(), LASS_ASSERT, lass::prim::perpDot(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::signedArea(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vector(), and lass::num::NumTraits< C >::zero.

template<typename T , class DP >
const Side lass::prim::SimplePolygon2D< T, DP >::classify ( const TPoint iP  )  const [inline]

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::contains ( const TPoint iP  )  const [inline]

return true when a point is inside or on a polygon.

When a point lies on a polygon edge the answer can either be true or false but in a way that for a meshing the answer will only be true for one polygon. More precise: for polygons sharing an edge only one of them will return true for a point on the edge. For an explanation of how this exactly works: http://www.ecse.rpi.edu/Homepages/wrf/geom/pnpoly.html (Wm Randolph Franklin)

Algorithm:
comp.graphics.algorithms Frequently Asked Questions: Subject 2.03: "How do I find if a point lies within a polygon?" http://www.faqs.org/faqs/graphics/algorithms-faq/

Definition at line 490 of file simple_polygon_2d.inl.

References lass::prim::Point2D< T >::position(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_, lass::prim::Vector2D< T >::x, and lass::prim::Vector2D< T >::y.

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::classify(), lass::spat::PlanarMesh::floodPolygon(), and lass::spat::PlanarMesh::floodPolygonCallback().

template<typename T , class DP >
void lass::prim::SimplePolygon2D< T, DP >::flip (  )  [inline]

flip orientation of polygon.

Definition at line 522 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_.

template<typename T , class DP >
void lass::prim::SimplePolygon2D< T, DP >::fixDegenerate (  )  [inline]

fixes degenerate polygons as far as possible.

things that can be repared are:

  • coincident vertices: if two or more adjacent vertices are coincident, they can be reduced to one vertex.
  • colinear edges: if two or more adjacent edges are colinear, they can be merged to one edge.
  • zero area: if a polygon has no area, this is pretty much the same as an empty polygon. All vertices will be removed.

Things that can't repared (and will cause an exception to be thrown) are:

  • non-simple polygons: there's no way we can repare polygons that are not simple, so we don't even try to! An exception is thrown regardless the DegeneratePolicy.

Definition at line 543 of file simple_polygon_2d.inl.

References lass::prim::SimplePolygon2D< T, DegeneratePolicy >::at(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::erase(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isSimple(), LASS_ENFORCE, lass::prim::perpDot(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::signedArea(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vector(), lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_, and lass::num::NumTraits< C >::zero.

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isValid (  )  const [inline]

template<typename T , class DP >
const bool lass::prim::SimplePolygon2D< T, DP >::isInRange ( int  iIndexOfVertex  )  const [inline, private]


Friends And Related Function Documentation

template<typename T , class DP , class NP , class PP >
Result intersect ( const SimplePolygon2D< T, DP > &  polygon,
const Ray2D< T, NP, PP > &  ray,
T &  t,
const T &  tMin = T() 
) [related]

Find the intersection of a ray and a triangle by their parameter t on the ray.

Parameters:
polygon [in] the simple polygon
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.
Returns:
  • rNone no intersections with t > tMin found t is not assigned.
  • rOne a intersection with t > tMin is found t is assigned.

Definition at line 71 of file ray_2d_simple_polygon_2d.h.

References lass::prim::Ray2D< T, NormalizingPolicy, ParameterPolicy >::direction(), lass::prim::impl::intersectEdge2D(), lass::prim::rNone, lass::prim::rOne, lass::prim::SimplePolygon2D< T, DegeneratePolicy >::size(), and lass::prim::Ray2D< T, NormalizingPolicy, ParameterPolicy >::support().

Referenced by lass::prim::SimplePolygon2D< T, DegeneratePolicy >::isSimple().

template<typename T , class DP >
io::XmlOStream & operator<< ( io::XmlOStream ioOStream,
const SimplePolygon2D< T, DP > &  iPolygon 
) [related]

Definition at line 622 of file simple_polygon_2d.inl.

References LASS_ENFORCE_STREAM.

template<typename T , class DP >
std::ostream & operator<< ( std::ostream &  ioOStream,
const SimplePolygon2D< T, DP > &  iPolygon 
) [related]

Definition at line 638 of file simple_polygon_2d.inl.

References LASS_ENFORCE_STREAM.

template<typename T , class DP >
lass::io::MatlabOStream & operator<< ( lass::io::MatlabOStream oOStream,
const SimplePolygon2D< T, DP > &  iPolygon 
) [related]


Field Documentation

template<typename T , class DegeneratePolicy = NoDegenerate>
TVertices lass::prim::SimplePolygon2D< T, DegeneratePolicy >::vertices_ [private]


The documentation for this class was generated from the following files:

Generated on Mon Nov 10 14:22:14 2008 for Library of Assembled Shared Sources by doxygen 1.5.7.1
SourceForge.net Logo