proj home

Files   Classes   Functions   Hierarchy  

triangledisplay.h

Go to the documentation of this file.
00001 #ifndef TRIANGLEDISPLAY_H
00002 #define TRIANGLEDISPLAY_H
00003 
00004 #include <gobj.h>
00005 #include <mathlib.h>
00006 #include <triangle.h>
00007 
00008 
00021 template< typename TR >
00022 class triangledisplay : public gobj
00023 {
00024 protected:
00026   gobjContainer & gx;
00028   TR const & tr;
00029 public:
00030 
00032   bool mesh;
00034   bool midpoints;
00036   bool bisectpoints;
00038   bool centroid;
00040   bool orthocenter;
00042   bool circumcenter;
00044   bool incenter;
00046   bool fermatpoint;
00048   bool napoleanpoint;
00050   bool gergonnepoint;
00051 
00053   void turnon();
00054 
00056   triangledisplay
00057   ( 
00058     gobjContainer & _gx, 
00059     TR const & _tr
00060   ) : gx(_gx), tr(_tr), mesh(1), midpoints(0), bisectpoints(0), centroid(0),
00061       orthocenter(0), circumcenter(0), incenter(0), 
00062       fermatpoint(0), napoleanpoint(0), gergonnepoint(0) {}
00063 
00065   void draw();
00066 };
00067 
00068 
00069 
00070 
00071 
00072 
00085 template< typename TR >
00086 class triangledisplaypoints : public triangledisplay<TR> 
00087 {
00088 public:
00089 
00091   triangledisplaypoints
00092   ( 
00093     gobjContainer & _gx, 
00094     TR const & _tr
00095   ) : triangledisplay<TR>(_gx,_tr) {}
00096 
00098   void draw();
00099 };
00100 
00101 
00102 
00103 
00104 
00108 template< typename TR >
00109 class triangledisplaymesh : public gobj
00110 {
00112   gobjContainer & gx;
00114   TR const & tr;
00115 public:
00116 
00118   triangledisplaymesh
00119   ( 
00120     gobjContainer & _gx, 
00121     TR const & _tr
00122   ) : gx(_gx), tr(_tr) {}
00123   
00125   void draw();
00126 };
00127 
00131 template< typename TR >
00132 class triangledisplaymidpoints : public gobj
00133 {
00135   gobjContainer & gx;
00137   TR const & tr;
00138 public:
00139 
00141   triangledisplaymidpoints
00142   ( 
00143     gobjContainer & _gx, 
00144     TR const & _tr
00145   ) : gx(_gx), tr(_tr) {}
00146   
00148   void draw();
00149 };
00150 
00154 template< typename TR >
00155 class triangledisplaybisectpoints : public gobj
00156 {
00158   gobjContainer & gx;
00160   TR const & tr;
00161 public:
00162 
00164   triangledisplaybisectpoints
00165   ( 
00166     gobjContainer & _gx, 
00167     TR const & _tr
00168   ) : gx(_gx), tr(_tr) {}
00169   
00171   void draw();
00172 };
00173 
00178 template< typename TR >
00179 class triangledisplaycentroid : public gobj
00180 {
00182   gobjContainer & gx;
00184   TR const & tr;
00185 public:
00186 
00188   triangledisplaycentroid
00189   ( 
00190     gobjContainer & _gx, 
00191     TR const & _tr
00192   ) : gx(_gx), tr(_tr) {}
00193   
00195   void draw();
00196 };
00197 
00203 template< typename TR >
00204 class triangledisplayorthocenter : public gobj
00205 {
00207   gobjContainer & gx;
00209   TR const & tr;
00210 public:
00211 
00213   triangledisplayorthocenter
00214   ( 
00215     gobjContainer & _gx, 
00216     TR const & _tr
00217   ) : gx(_gx), tr(_tr) {}
00218   
00220   void draw();
00221 };
00222 
00229 template< typename TR >
00230 class triangledisplaycircumcenter : public gobj
00231 {
00233   gobjContainer & gx;
00235   TR const & tr;
00236 public:
00237 
00239   triangledisplaycircumcenter
00240   ( 
00241     gobjContainer & _gx, 
00242     TR const & _tr
00243   ) : gx(_gx), tr(_tr) {}
00244   
00246   void draw();
00247 };
00248 
00255 template< typename TR >
00256 class triangledisplayincenter : public gobj
00257 {
00259   gobjContainer & gx;
00261   TR const & tr;
00262 public:
00263 
00265   triangledisplayincenter
00266   ( 
00267     gobjContainer & _gx, 
00268     TR const & _tr
00269   ) : gx(_gx), tr(_tr) {}
00270   
00272   void draw();
00273 };
00274 
00281 template< typename TR >
00282 class triangledisplayfermatpoint : public gobj
00283 {
00285   gobjContainer & gx;
00287   TR const & tr;
00288 public:
00289 
00291   triangledisplayfermatpoint
00292   ( 
00293     gobjContainer & _gx, 
00294     TR const & _tr
00295   ) : gx(_gx), tr(_tr) {}
00296   
00298   void draw();
00299 };
00300 
00308 template< typename TR >
00309 class triangledisplaynapoleanpoint : public gobj
00310 {
00312   gobjContainer & gx;
00314   TR const & tr;
00315 public:
00316 
00318   triangledisplaynapoleanpoint
00319   ( 
00320     gobjContainer & _gx, 
00321     TR const & _tr
00322   ) : gx(_gx), tr(_tr) {}
00323   
00325   void draw();
00326 };
00327 
00334 template< typename TR >
00335 class triangledisplaygergonnepoint : public gobj
00336 {
00338   gobjContainer & gx;
00340   TR const & tr;
00341 public:
00342 
00344   triangledisplaygergonnepoint
00345   ( 
00346     gobjContainer & _gx, 
00347     TR const & _tr
00348   ) : gx(_gx), tr(_tr) {}
00349   
00351   void draw();
00352 };
00353 
00354 //--------------------------------------------------------- 
00355 // Implementation
00356 
00357 template< typename TR >
00358 void triangledisplaynapoleanpoint<TR>::draw()
00359 {
00360   gx.push( new gobjglColor3ub(0,0,139) );
00361 
00362   gobjQuadric * gd = new gobjQuadric();
00363   gd->radius=.02;
00364   gx.push( gd );
00365 
00366   typename TR::PTtype e0;
00367   tr.equilaterali(e0,0);
00368   typename TR::PTtype e1;
00369   tr.equilaterali(e1,1);
00370   typename TR::PTtype e2;
00371   tr.equilaterali(e2,2);
00372 
00373   gx.push( new gobjMySphereDraw(e0,gd) );
00374   gx.push( new gobjMySphereDraw(e1,gd) );
00375   gx.push( new gobjMySphereDraw(e2,gd) );
00376 
00377   gx.push( new gobjglBegin(GL_LINES) );
00378 
00379   gx.push( new gobjglVertex3f(tr.pi[1]) );
00380   gx.push( new gobjglVertex3f(e0) );
00381   gx.push( new gobjglVertex3f(tr.pi[2]) );
00382   gx.push( new gobjglVertex3f(e0) );
00383 
00384   gx.push( new gobjglVertex3f(tr.pi[0]) );
00385   gx.push( new gobjglVertex3f(e1) );
00386   gx.push( new gobjglVertex3f(tr.pi[2]) );
00387   gx.push( new gobjglVertex3f(e1) );
00388 
00389   gx.push( new gobjglVertex3f(tr.pi[0]) );
00390   gx.push( new gobjglVertex3f(e2) );
00391   gx.push( new gobjglVertex3f(tr.pi[1]) );
00392   gx.push( new gobjglVertex3f(e2) );
00393 
00394   gx.push( new gobjglEnd() );
00395 
00396   gx.push( new gobjglColor3ub(0,192,225) );
00397   typename TR::PTtype np;
00398   tr.napoleanpoint(np);
00399   gx.push( new gobjMySphereDraw(np,gd) );
00400 
00401 
00402   typename TR::PTtype c2;
00403   TR(tr.pi[1],tr.pi[0],e2).centroid(c2);
00404   typename TR::PTtype c1;
00405   TR(tr.pi[0],tr.pi[2],e1).centroid(c1);
00406   typename TR::PTtype c0;
00407   TR(tr.pi[2],tr.pi[1],e0).centroid(c0);
00408 
00409   gx.push( new gobjMySphereDraw(c0,gd) );
00410   gx.push( new gobjMySphereDraw(c1,gd) );
00411   gx.push( new gobjMySphereDraw(c2,gd) );
00412 
00413   gx.push( new gobjglBegin(GL_LINES) );
00414 
00415   gx.push( new gobjglVertex3f(tr.pi[0]) );
00416   gx.push( new gobjglVertex3f(c0) );
00417   gx.push( new gobjglVertex3f(tr.pi[1]) );
00418   gx.push( new gobjglVertex3f(c1) );
00419   gx.push( new gobjglVertex3f(tr.pi[2]) );
00420   gx.push( new gobjglVertex3f(c2) );
00421 
00422   gx.push( new gobjglEnd() );
00423 }
00424 
00425 template< typename TR >
00426 void triangledisplayfermatpoint<TR>::draw()
00427 {
00428   gx.push( new gobjglColor3ub(0,0,139) );
00429 
00430   gobjQuadric * gd = new gobjQuadric();
00431   gd->radius=.02;
00432   gx.push( gd );
00433 
00434   typename TR::PTtype e0;
00435   tr.equilaterali(e0,0);
00436   typename TR::PTtype e1;
00437   tr.equilaterali(e1,1);
00438   typename TR::PTtype e2;
00439   tr.equilaterali(e2,2);
00440 
00441   gx.push( new gobjMySphereDraw(e0,gd) );
00442   gx.push( new gobjMySphereDraw(e1,gd) );
00443   gx.push( new gobjMySphereDraw(e2,gd) );
00444 
00445   gx.push( new gobjglBegin(GL_LINES) );
00446 
00447   gx.push( new gobjglVertex3f(tr.pi[1]) );
00448   gx.push( new gobjglVertex3f(e0) );
00449   gx.push( new gobjglVertex3f(tr.pi[2]) );
00450   gx.push( new gobjglVertex3f(e0) );
00451 
00452   gx.push( new gobjglVertex3f(tr.pi[0]) );
00453   gx.push( new gobjglVertex3f(e1) );
00454   gx.push( new gobjglVertex3f(tr.pi[2]) );
00455   gx.push( new gobjglVertex3f(e1) );
00456 
00457   gx.push( new gobjglVertex3f(tr.pi[0]) );
00458   gx.push( new gobjglVertex3f(e2) );
00459   gx.push( new gobjglVertex3f(tr.pi[1]) );
00460   gx.push( new gobjglVertex3f(e2) );
00461 
00462   gx.push( new gobjglEnd() );
00463 
00464   gx.push( new gobjglColor3ub(148,0,211) );
00465   typename TR::PTtype fp;
00466   tr.fermatpoint(fp);
00467   gx.push( new gobjMySphereDraw(fp,gd) );
00468 
00469 
00470 
00471   gx.push( new gobjglBegin(GL_LINES) );
00472 
00473   gx.push( new gobjglVertex3f(tr.pi[0]) );
00474   gx.push( new gobjglVertex3f(e0) );
00475   gx.push( new gobjglVertex3f(tr.pi[1]) );
00476   gx.push( new gobjglVertex3f(e1) );
00477   gx.push( new gobjglVertex3f(tr.pi[2]) );
00478   gx.push( new gobjglVertex3f(e2) );
00479 
00480   gx.push( new gobjglEnd() );
00481 }
00482 
00483 
00484 template< typename TR >
00485 void triangledisplaymesh<TR>::draw()
00486 {
00487   gx.push( new gobjglColor3ub(0,0,255) );
00488 
00489   gx.push( new gobjglBegin(GL_LINES) );
00490 
00491   gx.push( new gobjglVertex3f(tr.pi[0]) );
00492   gx.push( new gobjglVertex3f(tr.pi[1]) );
00493   gx.push( new gobjglVertex3f(tr.pi[0]) );
00494   gx.push( new gobjglVertex3f(tr.pi[2]) );
00495   gx.push( new gobjglVertex3f(tr.pi[1]) );
00496   gx.push( new gobjglVertex3f(tr.pi[2]) );
00497 
00498   gx.push( new gobjglEnd() );
00499 }
00500 
00501 template< typename TR >
00502 void triangledisplaymidpoints<TR>::draw()
00503 {
00504   gobjQuadric * gd = new gobjQuadric();
00505   gd->radius=.02;
00506   gx.push( gd );
00507 
00508   typename TR::PTtype m0;
00509   tr.midpoint(m0,0);
00510   typename TR::PTtype m1;
00511   tr.midpoint(m1,1);
00512   typename TR::PTtype m2;
00513   tr.midpoint(m2,2);
00514 
00515   gx.push( new gobjglColor3ub(255,0,255) );
00516   gx.push( new gobjMySphereDraw(m0,gd) );
00517   gx.push( new gobjMySphereDraw(m1,gd) );
00518   gx.push( new gobjMySphereDraw(m2,gd) );
00519 }
00520 
00521 template< typename TR >
00522 void triangledisplaybisectpoints<TR>::draw()
00523 {
00524   gobjQuadric * gd = new gobjQuadric();
00525   gd->radius=.02;
00526   gx.push( gd );
00527 
00528   typename TR::PTtype b0;
00529   tr.bisectangle(b0,0);
00530   typename TR::PTtype b1;
00531   tr.bisectangle(b1,1);
00532   typename TR::PTtype b2;
00533   tr.bisectangle(b2,2);
00534 
00535   gx.push( new gobjglColor3ub(185,185,211) );
00536   gx.push( new gobjMySphereDraw(b0,gd) );
00537   gx.push( new gobjMySphereDraw(b1,gd) );
00538   gx.push( new gobjMySphereDraw(b2,gd) );
00539 }
00540 
00541 
00542 
00543 template< typename TR >
00544 void triangledisplaycentroid<TR>::draw()
00545 {
00546   typename TR::PTtype m0;
00547   tr.midpoint(m0,0);
00548   typename TR::PTtype m1;
00549   tr.midpoint(m1,1);
00550   typename TR::PTtype m2;
00551   tr.midpoint(m2,2);
00552 
00553   gx.push( new gobjglColor3ub(0,255,0) );
00554   gx.push( new gobjglBegin(GL_LINES) );
00555   gx.push( new gobjglVertex3f(tr.pi[0]) );
00556   gx.push( new gobjglVertex3f(m0) );
00557   gx.push( new gobjglVertex3f(tr.pi[1]) );
00558   gx.push( new gobjglVertex3f(m1) );
00559   gx.push( new gobjglVertex3f(tr.pi[2]) );
00560   gx.push( new gobjglVertex3f(m2) );
00561   gx.push( new gobjglEnd() );
00562 
00563   typename TR::PTtype mc;
00564   tr.centroid(mc);
00565 
00566   gobjQuadric * gd = new gobjQuadric();
00567   gd->radius=.02;
00568   gx.push( gd );
00569   gx.push( new gobjMySphereDraw(mc,gd) );
00570 }
00571 
00572 template< typename TR >
00573 void triangledisplayorthocenter<TR>::draw()
00574 {
00575   typename TR::PTtype vc;
00576   tr.orthocenter(vc);
00577 
00578   gx.push( new gobjglColor3ub(184,134,11) );
00579   typename TR::PTtype v0;
00580   tr.orthocenteri(v0,0);
00581   typename TR::PTtype v1;
00582   tr.orthocenteri(v1,1);
00583   typename TR::PTtype v2;
00584   tr.orthocenteri(v2,2);
00585 
00586   gobjQuadric * gd = new gobjQuadric();
00587   gd->radius=.02;
00588   gx.push( gd );
00589 
00590   gx.push( new gobjMySphereDraw(v0,gd) );
00591   gx.push( new gobjMySphereDraw(v1,gd) );
00592   gx.push( new gobjMySphereDraw(v2,gd) );
00593 
00594   gx.push( new gobjglColor3ub(255,215,0) );
00595   gx.push( new gobjglBegin(GL_LINES) );
00596   gx.push( new gobjglVertex3f(tr.pi[0]) );
00597   gx.push( new gobjglVertex3f(v0) );
00598   gx.push( new gobjglVertex3f(tr.pi[1]) );
00599   gx.push( new gobjglVertex3f(v1) );
00600   gx.push( new gobjglVertex3f(tr.pi[2]) );
00601   gx.push( new gobjglVertex3f(v2) );
00602   gx.push( new gobjglEnd() );
00603 
00604   //gx.push_back( new gobjglColor3ub(124,184,14) );
00605   gx.push( new gobjMySphereDraw(vc,gd) );
00606 }
00607 
00608 template< typename TR >
00609 void triangledisplaycircumcenter<TR>::draw()
00610 {
00611   typename TR::PTtype cc;
00612   tr.circumcenter(cc);
00613 
00614   gobjQuadric * gd = new gobjQuadric();
00615   gd->radius=.02;
00616   gx.push( gd );
00617 
00618   gobjMyCircle * gc = new gobjMyCircle();
00619   gx.push( new gobjglColor3ub(255,0,0) );
00620   gx.push( new gobjMySphereDraw(cc,gd) );
00621 
00622 
00623   typename TR::PTtype m0;
00624   tr.midpoint(m0,0);
00625   typename TR::PTtype m1;
00626   tr.midpoint(m1,1);
00627   typename TR::PTtype m2;
00628   tr.midpoint(m2,2);
00629   
00630   gx.push( new gobjglBegin(GL_LINES) );
00631   gx.push( new gobjglVertex3f(cc) );
00632   gx.push( new gobjglVertex3f(m0) );
00633   gx.push( new gobjglVertex3f(cc) );
00634   gx.push( new gobjglVertex3f(m1) );
00635   gx.push( new gobjglVertex3f(cc) );
00636   gx.push( new gobjglVertex3f(m2) );
00637   gx.push( new gobjglEnd() );
00638 
00639   gx.push( gc );
00640 
00641   point3<double> center;
00642   point3<double> circlenormal;
00643   double r;
00644   tr.outercircle(r,center,circlenormal);
00645   gx.push( new gobjMySphereDraw(center,gd) );
00646   gx.push( new gobjMyCircleDraw(r,center,circlenormal,*gc) );
00647 
00648 /*
00649   point3<double> cc2(cc);
00650   point3<double> radius(cc2);
00651   radius.x -= tr.pi[0].x;
00652   radius.y -= tr.pi[0].y;
00653   gx.push_back( new gobjMyCircleDraw(sqrt(radius.dot()),cc2,*gc) );
00654 */
00655 }
00656 
00657 template< typename TR >
00658 void triangledisplayincenter<TR>::draw()
00659 {
00660   typename TR::PTtype b0;
00661   tr.bisectangle(b0,0);
00662   typename TR::PTtype b1;
00663   tr.bisectangle(b1,1);
00664   typename TR::PTtype b2;
00665   tr.bisectangle(b2,2);
00666 
00667   gobjQuadric * gd = new gobjQuadric();
00668   gd->radius=.02;
00669   gx.push( gd );
00670 
00671   gx.push( new gobjglColor3ub(127,255,212) );
00672   gx.push( new gobjMySphereDraw(b0,gd) );
00673   gx.push( new gobjMySphereDraw(b1,gd) );
00674   gx.push( new gobjMySphereDraw(b2,gd) );
00675 
00676   gobjMyCircle * gc = new gobjMyCircle();
00677 
00678   //typename TR::PTtype center;
00679   //typename TR::PTtype circlenormal;
00680   point3<double> center;
00681   point3<double> circlenormal;
00682   double r;
00683   tr.innercircle(r,center,circlenormal);
00684   gx.push( new gobjMySphereDraw(center,gd) );
00685   gx.push( new gobjMyCircleDraw(r,center,circlenormal,*gc) );
00686   //gx.push_back( new gobjMyCircleDraw(r,x,*gc) );
00687 
00688   gx.push( new gobjglBegin(GL_LINES) );
00689   gx.push( new gobjglVertex3f(tr.pi[0]) );
00690   gx.push( new gobjglVertex3f(b0) );
00691   gx.push( new gobjglVertex3f(tr.pi[1]) );
00692   gx.push( new gobjglVertex3f(b1) );
00693   gx.push( new gobjglVertex3f(tr.pi[2]) );
00694   gx.push( new gobjglVertex3f(b2) );
00695   gx.push( new gobjglEnd() );
00696 }
00697 
00698 
00699 template< typename TR >
00700 void triangledisplaygergonnepoint<TR>::draw()
00701 {
00702   gobjQuadric * gd = new gobjQuadric();
00703   gd->radius=.02;
00704   gx.push( gd );
00705 
00706   gx.push( new gobjglColor3ub(127,255,212) );
00707   gobjMyCircle * gc = new gobjMyCircle();
00708   //typename TR::PTtype center;
00709   //typename TR::PTtype circlenormal;
00710   point3<double> center;
00711   point3<double> circlenormal;
00712   double r;
00713   tr.innercircle(r,center,circlenormal);
00714   gx.push( new gobjMySphereDraw(center,gd) );
00715   gx.push( new gobjMyCircleDraw(r,center,circlenormal,*gc) );
00716 
00717   typename TR::PTtype c0;
00718   tr.incenteri(c0,0);
00719   typename TR::PTtype c1;
00720   tr.incenteri(c1,1);
00721   typename TR::PTtype c2;
00722   tr.incenteri(c2,2);
00723 
00724   gx.push( new gobjglColor3ub(127,255,0) );
00725   gx.push( new gobjMySphereDraw(c0,gd) );
00726   gx.push( new gobjMySphereDraw(c1,gd) );
00727   gx.push( new gobjMySphereDraw(c2,gd) );
00728 
00729   typename TR::PTtype gp;
00730   tr.gergonnepoint(gp);
00731   gx.push( new gobjMySphereDraw(gp,gd) );
00732 
00733   gx.push( new gobjglBegin(GL_LINES) );
00734   gx.push( new gobjglVertex3f(tr.pi[0]) );
00735   gx.push( new gobjglVertex3f(c0) );
00736   gx.push( new gobjglVertex3f(tr.pi[1]) );
00737   gx.push( new gobjglVertex3f(c1) );
00738   gx.push( new gobjglVertex3f(tr.pi[2]) );
00739   gx.push( new gobjglVertex3f(c2) );
00740   gx.push( new gobjglEnd() );
00741 }
00742 
00743 
00744 
00745 
00746 template< typename TR >
00747 void triangledisplay<TR>::turnon()
00748 {
00749   mesh=true;
00750   midpoints=true;
00751   bisectpoints=true;
00752   centroid=true;
00753   orthocenter=true;
00754   circumcenter=true;
00755   incenter=true;
00756   fermatpoint=true;
00757   napoleanpoint=true;
00758   gergonnepoint=true;
00759 }
00760 
00761 template< typename TR >
00762 void triangledisplay<TR>::draw()
00763 {
00764   vector< gobj* > vi;
00765 
00766   if (mesh)
00767     vi.push_back(new triangledisplaymesh<TR>(gx,tr));
00768   if (midpoints)
00769     vi.push_back(new triangledisplaymidpoints<TR>(gx,tr));
00770   if (bisectpoints)
00771     vi.push_back(new triangledisplaybisectpoints<TR>(gx,tr));
00772   if (centroid)
00773     vi.push_back(new triangledisplaycentroid<TR>(gx,tr));
00774   if (orthocenter)
00775     vi.push_back(new triangledisplayorthocenter<TR>(gx,tr));
00776   if (circumcenter)
00777     vi.push_back(new triangledisplaycircumcenter<TR>(gx,tr));
00778   if (incenter)
00779     vi.push_back(new triangledisplayincenter<TR>(gx,tr));
00780   if (fermatpoint)
00781     vi.push_back(new triangledisplayfermatpoint<TR>(gx,tr));
00782   if (napoleanpoint)
00783     vi.push_back(new triangledisplaynapoleanpoint<TR>(gx,tr));
00784   if (gergonnepoint)
00785     vi.push_back(new triangledisplaygergonnepoint<TR>(gx,tr));
00786 
00787   for (uint i=0; i<vi.size(); ++i)
00788   {
00789     vi[i]->draw();
00790     delete vi[i];
00791   }
00792 }
00793 
00794 template< typename TR >
00795 void triangledisplaypoints<TR>::draw()
00796 {
00797   vector< gobj* > vi;
00798 
00799   if (triangledisplay<TR>::mesh)
00800     vi.push_back(new triangledisplaymesh<TR>(triangledisplay<TR>::gx,triangledisplay<TR>::tr));
00801 
00802   if (triangledisplay<TR>::midpoints)
00803     vi.push_back(new triangledisplaymidpoints<TR>(triangledisplay<TR>::gx,triangledisplay<TR>::tr));
00804 
00805   if (triangledisplay<TR>::bisectpoints)
00806     vi.push_back(new triangledisplaybisectpoints<TR>(triangledisplay<TR>::gx,triangledisplay<TR>::tr));
00807 
00808 
00809   gobjQuadric * gd = new gobjQuadric();
00810   gd->radius=.02;
00811   triangledisplay<TR>::gx.push( gd );
00812 
00813   typename TR::PTtype c;
00814 
00815   if (triangledisplay<TR>::centroid)
00816   {
00817     triangledisplay<TR>::gx.push( new gobjglColor3ub(0,255,0) );
00818     triangledisplay<TR>::tr.centroid(c);
00819     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00820   }
00821 
00822   if (triangledisplay<TR>::orthocenter)
00823   {
00824     triangledisplay<TR>::gx.push( new gobjglColor3ub(184,134,11) );
00825     triangledisplay<TR>::tr.orthocenter(c);
00826     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00827   }
00828 
00829   if (triangledisplay<TR>::circumcenter)
00830   {
00831     triangledisplay<TR>::gx.push( new gobjglColor3ub(255,0,0) );
00832     triangledisplay<TR>::tr.circumcenter(c);
00833     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00834   }
00835 
00836   if (triangledisplay<TR>::incenter)
00837   {
00838     triangledisplay<TR>::gx.push( new gobjglColor3ub(127,255,212) );
00839     triangledisplay<TR>::tr.incenter(c);
00840     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00841   }
00842 
00843   if (triangledisplay<TR>::fermatpoint)
00844   {
00845     triangledisplay<TR>::gx.push( new gobjglColor3ub(148,0,211) );
00846     triangledisplay<TR>::tr.fermatpoint(c);
00847     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00848   }
00849 
00850   if (triangledisplay<TR>::napoleanpoint)
00851   {
00852     triangledisplay<TR>::gx.push( new gobjglColor3ub(0,192,255) );
00853     triangledisplay<TR>::tr.napoleanpoint(c);
00854     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00855   }
00856 
00857   if (triangledisplay<TR>::gergonnepoint)
00858   {
00859     triangledisplay<TR>::gx.push( new gobjglColor3ub(127,255,0) );
00860     triangledisplay<TR>::tr.gergonnepoint(c);
00861     triangledisplay<TR>::gx.push( new gobjMySphereDraw(c,gd) );
00862   }
00863 
00864   for (uint i=0; i<vi.size(); ++i)
00865   {
00866     vi[i]->draw();
00867     delete vi[i];
00868   }
00869 }
00870 
00871 
00872 #endif
00873 
00874 
00875 

Generated on Fri Mar 4 00:49:30 2011 for Chelton Evans Source by  doxygen 1.5.8