proj home

Files   Classes   Functions   Hierarchy  

protractor.cpp

Go to the documentation of this file.
00001 #include <cassert>
00002 #include <cmath>
00003 using namespace std;
00004 
00005 #include <gobj.h>
00006 #include <graphmisc.h>
00007 #include <point.h>
00008 #include <print.h>
00009 #include <protractor.h>
00010 #include <ruler.h>
00011 
00012 //#define PI 3.14159265359
00013 
00014 void protractor::addAngleRuler
00015 (
00016   doublec ticklenmajor,
00017   doublec ticklenmiddle,
00018   doublec ticklenminor
00019 )
00020 {
00021   ruler * r = new ruler();
00022   r->addAngleRuler
00023   (
00024     radius,
00025     0.0,
00026     360.0,
00027     ticklenmajor,
00028     ticklenmiddle,
00029     ticklenminor    
00030   );
00031 
00032   push(r);    
00033 }
00034 
00035 
00036 void protractor::addRadiusRuler
00037 (
00038   doublec ticklenmajor,
00039   doublec ticklenmiddle,
00040   doublec ticklenminor
00041 )
00042 {
00043   ruler * r = new ruler();
00044   
00045   r->addStraightRuler
00046   (
00047     radius,
00048     point2<double>(0.0,0.0),
00049     point2<double>(radius,0.0),
00050     ticklenmajor,
00051     ticklenmiddle,
00052     ticklenminor    
00053   );
00054 
00055   push(r);
00056 }
00057 
00058 
00059 void protractor::converttocartesian
00060 (
00061   point2<double> & p,
00062   point2<double> const & p2
00063 )
00064 {
00065   p.x = p2.x*cos(p2.y);
00066   p.y = p2.x*sin(p2.y);
00067 }
00068 
00069 protractor::protractor(doublec _radius)
00070   : gobjContainer(true), radius(_radius)
00071 {
00072 }
00073 
00074 void protractor::addCirclesText
00075 (
00076   vector<string> const & v
00077 )
00078 {
00079   uintc n = v.size();
00080 
00081   gobjContainer * c = new gobjContainer();
00082 
00083   double dt = PI * 2.0 / n;
00084 
00085   point2<double> x0;
00086 
00087   c->push( new gobjglPushAttrib(GL_CURRENT_BIT) );
00088   c->push( new gobjglPushAttrib(GL_LIGHTING_BIT) );
00089   c->push( new gobjglDisable(GL_LIGHTING) );
00090 
00091   c->push( new gobjglColor3ub(0,192,130) );
00092 
00093   for (uint i=0; i<n; ++i)
00094   {
00095     point2<double> x1(radius,dt*i);
00096     converttocartesian(x0,x1);
00097 
00098     c->push( new gobjMyBitmapCharacter(v[i], point3<float>(x0.x,x0.y,0.0)) );
00099   }
00100 
00101   c->push( new gobjglPopAttrib() );
00102   c->push( new gobjglPopAttrib() );
00103 
00104   push(c);
00105 }
00106 
00107 
00108 
00109 void protractor::addCircles(uintc n)
00110 {
00111   gobjContainer * c = new gobjContainer();
00112 
00113   gobjMyCircle * cir = new gobjMyCircle();
00114   c->push(cir);
00115 
00116   c->push( new gobjglPushAttrib(GL_CURRENT_BIT) );
00117   c->push( new gobjglPushAttrib(GL_LIGHTING_BIT) );
00118   c->push( new gobjglDisable(GL_LIGHTING) );
00119 
00120   c->push( new gobjglColor3ub(192,192,192) );
00121 
00122 
00123   double dr = radius / n;
00124 
00125   gobjMyCircleDraw * cird;
00126 
00127   for (uint i=0; i<n; ++i)
00128   {
00129     cird = new gobjMyCircleDraw( dr * (i+1), point3<float>(), *cir );
00130     c->push(cird);
00131   }
00132 
00133   c->push( new gobjglPopAttrib() );
00134   c->push( new gobjglPopAttrib() );
00135 
00136   push(c);
00137 }
00138 
00139 void protractor::addAxes(uintc n)
00140 {
00141   double dt = PI * 2.0 / n;
00142 
00143   gobjContainer * c = new gobjContainer();
00144 
00145   point2<double> x0;
00146 
00147   c->push( new gobjglPushAttrib(GL_CURRENT_BIT) );
00148   c->push( new gobjglPushAttrib(GL_LIGHTING_BIT) );
00149   c->push( new gobjglDisable(GL_LIGHTING) );
00150 
00151   c->push( new gobjglColor3ub(155,0,0) );
00152 
00153   c->push( new gobjglBegin(GL_LINES) );
00154   for (uint i=0; i<n; ++i)
00155   {
00156     point2<double> x1(radius,dt*i);
00157     converttocartesian(x0,x1);
00158     c->push( new gobjglVertex2f(x0) );
00159     c->push( new gobjglVertex2f(0.0,0.0) );
00160   }
00161   c->push(new gobjglEnd());
00162 
00163   c->push( new gobjglPopAttrib() );
00164   c->push( new gobjglPopAttrib() );
00165 
00166   push(c);
00167 }
00168 
00169 
00170 
00171 
00172 
00173 
00174 
00175 

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