Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

gugr::polyline Struct Reference

#include <gugr_contour.h>

List of all members.

Public Methods

template<class T> bool init (int nP, const Ptr< point2< T > > &P, T minx, T miny, T scalei)
template<> bool init (int nP, const Ptr< point2< rational > > &P)

Public Attributes

Ptr< point2< rational > > verts
int nVerts
Ptr< linelines


Member Function Documentation

template<>
bool gugr::polyline::init int    nP,
const Ptr< point2< rational > > &    P
[inline]
 

Definition at line 98 of file gugr_contour.h.

References lines, nVerts, and verts.

00099   {
00100     int i,j;
00101 
00102     verts.reserve_pool(nP);
00103     lines.reserve_pool(nP);
00104 
00105     verts[0] = P[0];
00106     j = 0;
00107     i = 1;
00108 
00109     for(;;)
00110     {
00111       while( (i < nP) &&
00112              (compare(P[i].x,verts[j].x)==0) && 
00113              (compare(P[i].y,verts[j].y)==0) )
00114         i++;
00115 
00116       if( i == nP ) break;
00117 
00118       j++;
00119       verts[j] = P[i];
00120       lines[j-1] = line( verts[j-1], verts[j] );
00121 
00122     }
00123 
00124     nVerts = j+1;
00125     if( (compare(verts[nVerts-1].x,verts[0].x)==0) &&
00126         (compare(verts[nVerts-1].y,verts[0].y)==0) )
00127       nVerts--;
00128 
00129     if( nVerts < 2 ) return false;
00130 
00131     lines[nVerts-1] = line( verts[nVerts-1], verts[0] );
00132     return true;
00133   }

template<class T>
bool gugr::polyline::init int    nP,
const Ptr< point2< T > > &    P,
  minx,
  miny,
  scalei
[inline]
 

Definition at line 43 of file gugr_contour.h.

References gugr::coord2int(), lines, nVerts, and verts.

00044   {
00045     T x,y;
00046     int i,j;
00047     rational vx,vy;
00048     unsigned long *cbuf = 
00049       (unsigned long *)alloca(gul::rtr<T>::mantissa_length());
00050 
00051     verts.reserve_pool(nP);
00052     lines.reserve_pool(nP);
00053 
00054     x = (P[0].x - minx)*scalei;
00055     y = (P[0].y - miny)*scalei;
00056     verts[0].x = rational(coord2int(x,cbuf),cbuf);
00057     verts[0].y = rational(coord2int(y,cbuf),cbuf);
00058     j = 0;
00059     i = 1;
00060 
00061     for( ;; )
00062     {
00063       while( i < nP )
00064       {
00065         x = (P[i].x - minx)*scalei;
00066         y = (P[i].y - miny)*scalei;
00067         vx = rational(coord2int(x,cbuf),cbuf);
00068         vy = rational(coord2int(y,cbuf),cbuf);
00069 
00070         if( (compare(vx,verts[j].x)!=0) ||
00071             (compare(vy,verts[j].y)!=0) )
00072           break;
00073 
00074         i++;
00075       }
00076 
00077       if( i == nP ) break;
00078 
00079       j++;
00080 
00081       verts[j].x = vx;
00082       verts[j].y = vy;
00083       lines[j-1] = line( verts[j-1], verts[j] );
00084     }
00085 
00086     nVerts = j+1;
00087     if( (compare(verts[nVerts-1].x,verts[0].x)==0) &&
00088         (compare(verts[nVerts-1].y,verts[0].y)==0) )
00089       nVerts--;
00090 
00091     if( nVerts < 2 ) return false;
00092 
00093     lines[nVerts-1] = line( verts[nVerts-1], verts[0] );
00094     return true;
00095   }


Member Data Documentation

Ptr<line> gugr::polyline::lines
 

Definition at line 40 of file gugr_contour.h.

Referenced by init().

int gugr::polyline::nVerts
 

Definition at line 38 of file gugr_contour.h.

Referenced by init().

Ptr<point2<rational> > gugr::polyline::verts
 

Definition at line 37 of file gugr_contour.h.

Referenced by init().


The documentation for this struct was generated from the following file:
Generated on Mon Jan 21 04:17:55 2002 for GUL 0.6 - Geometry Utility Library by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001