face< C, V, POINT > Class Template Reference

#include <face.hpp>

List of all members.

Public Types

Public Member Functions


Detailed Description

template<class C, class V = default_env, class POINT = point<C,3,V>>
class mmx::shape::face< C, V, POINT >

Definition at line 53 of file face.hpp.


Member Typedef Documentation

Definition at line 60 of file face.hpp.

typedef edge<C,V,POINT> Edge

Definition at line 58 of file face.hpp.

typedef POINT Point

Definition at line 57 of file face.hpp.

typedef use<shape_def,V>::Shape Shape

Definition at line 56 of file face.hpp.


Constructor & Destructor Documentation

face ( void   )  [inline]

Definition at line 62 of file face.hpp.

00062 : m_index(0) { };

face ( Point p1,
Point p2,
Point p3 
) [inline]

Definition at line 63 of file face.hpp.

00063                                           : Shape() {
00064     m_points<<p1;
00065     m_points<<p2;
00066     m_points<<p3;
00067     m_index=0;
00068   }; 


Member Function Documentation

const_iterator begin (  )  const [inline]

Definition at line 70 of file face.hpp.

References Seq< C, R >::begin().

00070 {return m_points.begin();}

const_iterator end (  )  const [inline]

Definition at line 71 of file face.hpp.

References Seq< C, R >::end().

00071 {return m_points.end();}

int get_index (  )  [inline]

Definition at line 81 of file face.hpp.

00081 { return m_index; } ;

void insert ( Point p  )  [inline]

Definition at line 77 of file face.hpp.

Referenced by voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), semialgebraic2d< C, V >::run(), and arrangement2d< C, V >::run().

00077 { m_points<<p; } ;

bool is_ccw (  )  [inline]

Definition at line 187 of file face.hpp.

References face< C, V, POINT >::size().

00188 {
00189    double z(0);
00190    int    n=this->size();
00191    
00192    if (n < 3)
00193        return(0);
00194    n--;
00195    for (int i=0;i<n;i++) 
00196    {
00197        z+= m_points[i  ]->x() * m_points[i+1]->y() -
00198            m_points[i+1]->x() * m_points[i  ]->y() ;
00199    }
00200    z+= m_points[n]->x() * m_points[0]->y() -
00201        m_points[0]->x() * m_points[n]->y() ;
00202 
00203    return (z>0);
00204 }

Point* not_on ( Edge a  )  [inline]

Refine face.

Definition at line 91 of file face.hpp.

References edge< C, V, POINT >::destination(), and edge< C, V, POINT >::source().

00092     {
00093   foreach( Point * p, m_points)
00094     if ( !equal( a->destination(), p ) &&
00095          !equal( a->source()     , p ) )
00096       return p;
00097   std::cout<<" ! not_on(Edge) not found"<<std::endl;
00098   return NULL;};

Point* operator[] ( int  i  )  [inline]

Definition at line 76 of file face.hpp.

00076 {return m_points[i];}

Point* points ( int  i  )  [inline]

Definition at line 75 of file face.hpp.

00075 {return m_points[i];}

Seq<Point*>& points (  )  [inline]

Definition at line 74 of file face.hpp.

Referenced by use< tpl3d_def >::print_as_graphic().

00074 {return m_points;}

void push_vertex ( Point p  )  [inline]

Definition at line 78 of file face.hpp.

00078 { m_points<<p; } ;

void reverse (  )  [inline]

Reverse face.

Definition at line 86 of file face.hpp.

References Seq< C, R >::reverse().

00086 { m_points.reverse(); } ;

void set_index ( const int &  i  )  [inline]

Definition at line 80 of file face.hpp.

Referenced by voronoi2dimpl< C, V >::run(), and voronoi2d< C, V >::run().

00080 { m_index=i; } ;

unsigned size ( void   )  const [inline]

Definition at line 73 of file face.hpp.

References Seq< C, R >::size().

Referenced by face< C, V, POINT >::is_ccw(), and use< tpl3d_def >::print_as_graphic().

00073 {return m_points.size();}


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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1