proj home

Files   Classes   Functions   Hierarchy  

trianglevisualize< T > Class Template Reference

Visualize triangle properties. More...

#include <trianglevisualize.h>

Collaboration diagram for trianglevisualize< T >:

List of all members.

Public Member Functions

 trianglevisualize (gobjContainer &_gX, triangle< T > const &_tr)
 Constructor with basic switch display defaults.
void eval () const
 Evaluate the graphics writing it out to gX.

Public Attributes

bool mesh_on
 Display the triangle.
bool midpoints_on
 Display the midpoints.
bool midpoint_center_on
 Display the centroid.
bool altitude_to_point_on
 Display the altitudes to there opposite points, and the orthocenter.
bool altitude_on
 Display the circumcenter.
bool innercircle_on
 Display the inner circle.


Detailed Description

template<typename T>
class trianglevisualize< T >

Visualize triangle properties.

This is a monolythic design. Turn the switches on and then eval() to write the graphics out to the graphics container passed in at contruction time.

Definition at line 16 of file trianglevisualize.h.


Constructor & Destructor Documentation

template<typename T >
trianglevisualize< T >::trianglevisualize ( gobjContainer _gX,
triangle< T > const &  _tr 
) [inline]

Constructor with basic switch display defaults.

Definition at line 58 of file trianglevisualize.h.

00062   : gX(_gX), tr(_tr), mesh_on(true), midpoints_on(false),
00063     midpoint_center_on(false), altitude_to_point_on(false),
00064     altitude_on(false), innercircle_on(false)
00065 {
00066 }


Member Function Documentation

template<typename T >
void trianglevisualize< T >::eval (  )  const [inline]

Evaluate the graphics writing it out to gX.

Definition at line 70 of file trianglevisualize.h.

References trianglevisualize< T >::altitude_on, trianglevisualize< T >::altitude_to_point_on, triangle< PT, PD >::bisectangle(), triangle< PT, PD >::centroid(), triangle< PT, PD >::circumcenter(), point3< T >::dot(), triangle< PT, PD >::innercircle(), trianglevisualize< T >::innercircle_on, trianglevisualize< T >::mesh_on, triangle< PT, PD >::midpoint(), trianglevisualize< T >::midpoint_center_on, trianglevisualize< T >::midpoints_on, triangle< PT, PD >::orthocenter(), triangle< PT, PD >::orthocenteri(), triangle< PT, PD >::pi, r, gobjQuadric::radius, point3< T >::x, and point3< T >::y.

00071 {
00072   gX.push_back( new gobjglDisable(GL_LIGHTING) );
00073 
00074   if (mesh_on)
00075   {
00076 
00077   gX.push_back( new gobjglColor3ub(0,0,255) );
00078 
00079   gX.push_back( new gobjglBegin(GL_LINES) );
00080 
00081   gX.push_back( new gobjglVertex3f(tr.pi[0]) );
00082   gX.push_back( new gobjglVertex3f(tr.pi[1]) );
00083   gX.push_back( new gobjglVertex3f(tr.pi[0]) );
00084   gX.push_back( new gobjglVertex3f(tr.pi[2]) );
00085   gX.push_back( new gobjglVertex3f(tr.pi[1]) );
00086   gX.push_back( new gobjglVertex3f(tr.pi[2]) );
00087 
00088   gX.push_back( new gobjglEnd() );
00089 
00090   }
00091 
00092   gX.push_back( new gobjglColor3ub(255,0,255) );
00093 
00094   T m0 = tr.midpoint(0);
00095   T m1 = tr.midpoint(1);
00096   T m2 = tr.midpoint(2);
00097 
00098   gobjQuadric * gd = new gobjQuadric();
00099   gd->radius=.02;
00100   gX.push_back( gd );
00101 
00102   if (midpoints_on)
00103   {
00104   gX.push_back( new gobjglColor3ub(255,0,255) );
00105   gX.push_back( new gobjMySphereDraw(m0,gd) );
00106   gX.push_back( new gobjMySphereDraw(m1,gd) );
00107   gX.push_back( new gobjMySphereDraw(m2,gd) );
00108   }
00109   
00110   if (midpoint_center_on)
00111   {
00112   gX.push_back( new gobjglColor3ub(0,255,0) );
00113   gX.push_back( new gobjglBegin(GL_LINES) );
00114   gX.push_back( new gobjglVertex3f(tr.pi[0]) );
00115   gX.push_back( new gobjglVertex3f(m0) );
00116   gX.push_back( new gobjglVertex3f(tr.pi[1]) );
00117   gX.push_back( new gobjglVertex3f(m1) );
00118   gX.push_back( new gobjglVertex3f(tr.pi[2]) );
00119   gX.push_back( new gobjglVertex3f(m2) );
00120   gX.push_back( new gobjglEnd() );
00121 
00122   T mc = tr.centroid();
00123   gX.push_back( new gobjMySphereDraw(mc,gd) );
00124   }
00125 
00126   T vc = tr.orthocenter();
00127 
00128   if (altitude_to_point_on)
00129   {
00130   gX.push_back( new gobjglColor3ub(184,134,11) );
00131   T v0 = tr.orthocenteri(0);
00132   gX.push_back( new gobjMySphereDraw(v0,gd) );
00133   T v1 = tr.orthocenteri(1);
00134   gX.push_back( new gobjMySphereDraw(v1,gd) );
00135   T v2 = tr.orthocenteri(2);
00136   gX.push_back( new gobjMySphereDraw(v2,gd) );
00137 
00138 
00139   gX.push_back( new gobjglColor3ub(255,215,0) );
00140   gX.push_back( new gobjglBegin(GL_LINES) );
00141   gX.push_back( new gobjglVertex3f(tr.pi[0]) );
00142   gX.push_back( new gobjglVertex3f(v0) );
00143   gX.push_back( new gobjglVertex3f(tr.pi[1]) );
00144   gX.push_back( new gobjglVertex3f(v1) );
00145   gX.push_back( new gobjglVertex3f(tr.pi[2]) );
00146   gX.push_back( new gobjglVertex3f(v2) );
00147   gX.push_back( new gobjglEnd() );
00148 
00149   gX.push_back( new gobjMySphereDraw(vc,gd) );
00150   }
00151   
00152   T cc = tr.circumcenter();
00153 
00154   gobjMyCircle * gc = new gobjMyCircle();
00155 
00156   if(altitude_on)
00157   {
00158   gX.push_back( new gobjglColor3ub(255,0,0) );
00159   gX.push_back( new gobjMySphereDraw(cc,gd) );
00160   
00161   gX.push_back( new gobjglBegin(GL_LINES) );
00162   gX.push_back( new gobjglVertex3f(cc) );
00163   gX.push_back( new gobjglVertex3f(m0) );
00164   gX.push_back( new gobjglVertex3f(cc) );
00165   gX.push_back( new gobjglVertex3f(m1) );
00166   gX.push_back( new gobjglVertex3f(cc) );
00167   gX.push_back( new gobjglVertex3f(m2) );
00168   gX.push_back( new gobjglEnd() );
00169 
00170   
00171   gX.push_back( gc );
00172   point3<double> cc2(cc);
00173   point3<double> radius(cc2);
00174   radius.x -= tr.pi[0].x;
00175   radius.y -= tr.pi[0].y;
00176   gX.push_back( new gobjMyCircleDraw(sqrt(radius.dot()),cc2,*gc) );
00177 
00178   }
00179 
00180   gX.push_back( new gobjglBegin(GL_LINES) );
00181   gX.push_back( new gobjglVertex3f(cc) );
00182   gX.push_back( new gobjglColor3ub(255,215,0) );
00183   gX.push_back( new gobjglVertex3f(vc) );
00184   gX.push_back( new gobjglEnd() );
00185 
00186   if (innercircle_on)
00187   {
00188   T b0(tr.bisectangle(0));
00189   T b1 = tr.bisectangle(1);
00190   T b2 = tr.bisectangle(2);
00191   gX.push_back( new gobjglColor3ub(127,255,212) );
00192   gX.push_back( new gobjMySphereDraw(b0,gd) );
00193   gX.push_back( new gobjMySphereDraw(b1,gd) );
00194   gX.push_back( new gobjMySphereDraw(b2,gd) );
00195 
00196 
00197   T x;
00198   double r;
00199   tr.innercircle(x,r);
00200   gX.push_back( new gobjMySphereDraw(x,gd) );
00201   gX.push_back( new gobjMyCircleDraw(r,point3<double>(x),*gc) );
00202 
00203   gX.push_back( new gobjglBegin(GL_LINES) );
00204   gX.push_back( new gobjglVertex3f(tr.pi[0]) );
00205   gX.push_back( new gobjglVertex3f(b0) );
00206   gX.push_back( new gobjglVertex3f(tr.pi[1]) );
00207   gX.push_back( new gobjglVertex3f(b1) );
00208   gX.push_back( new gobjglVertex3f(tr.pi[2]) );
00209   gX.push_back( new gobjglVertex3f(b2) );
00210   gX.push_back( new gobjglEnd() );
00211   }
00212 
00213 }


Member Data Documentation

template<typename T >
bool trianglevisualize< T >::altitude_on

Display the circumcenter.

Definition at line 35 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().

template<typename T >
bool trianglevisualize< T >::altitude_to_point_on

Display the altitudes to there opposite points, and the orthocenter.

Definition at line 33 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().

template<typename T >
bool trianglevisualize< T >::innercircle_on

Display the inner circle.

Definition at line 37 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().

template<typename T >
bool trianglevisualize< T >::mesh_on

Display the triangle.

Definition at line 26 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().

template<typename T >
bool trianglevisualize< T >::midpoint_center_on

Display the centroid.

Definition at line 30 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().

template<typename T >
bool trianglevisualize< T >::midpoints_on

Display the midpoints.

Definition at line 28 of file trianglevisualize.h.

Referenced by trianglevisualize< T >::eval().


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

Generated on Fri Mar 4 00:50:22 2011 for Chelton Evans Source by  doxygen 1.5.8