Files Classes Functions Hierarchy
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
1.5.8