polyline.h Source File

Main Page Class Hierarchy Compound List File List Compound Members

# polyline.h

    00001
    00002
    00003 /*
    00004 Program POLYLINE.H
    00005 Purpose GdsII polyline structure definition (header)
    00006 Last Update     12-12-1995
    00007 */
    00008
    00009 #ifndef POLYLINE_H
    00010 #define POLYLINE_H
    00011
    00012 #ifdef __GNUG__
    00013 #pragma interface
    00014 #endif
    00015
    00016 #define KLEIN 1.0e-30
    00017 #define GROOT 1.0e30
    00018 #define PHI_MARGE 0.3  //must be lager than 0, 0.3 -> 30%  (graden)
    00019 #define SEG_MARGE 0.3  //must be lager than 0, 0.3 -> 30%
    00020 #define         OUTSIDE_POLY            0
    00021 #define         INSIDE_POLY                     1
    00022 #define         ON_POLY                 2
    00023 // select procedure defines
    00024 #define SELECT_DPHI                     10
    00025
    00026
    00027 #include <math.h>
    00028
    00029 #include "misc.h"
    00030 #include "wxmatrix.h"
    00031 #include "bbox.h"
    00032
    00033 #include "segment.h"
    00034 #include "_lnk_itr.h"
    00035
    00037
    00042 class G_Polyline :public DL_List<void*>
    00043 {
    00044         public:
    00045                 // constructors and destructors
    00046                 G_Polyline();
    00047                 virtual ~G_Polyline();
    00048
    00049                 void                            MakeEmpty();
    00050
    00051                 bool                            RemoveZero();
    00052                 bool                            ContainsArcs();
    00053       bool                              CheckForArcs();
    00054       void                              SetArcs(bool val){_hasarcs=val;};
    00055                 bool                            CheckForPerfectArc(Point& middle, double& radius);
    00056                 BoundingBox*    CalcBoundingBox(BoundingBox* a_box);
    00057                 void                    Transform(wxTransformMatrix* _Matrix);
    00058                 void                    ConvertArcs(double aber);
    00059                 void                            ConvertArcs2(double dphi,int minseg = 6);
    00060       void           ConvertSplined(double Aber);
    00061       void                      CalcArc(TDLI<Segment>* where,Point& mid,double& Radius,double& beginrad,double& midrad,double& endrad,double& phit);
    00062                 void                    Copy(G_Polyline* PIT);
    00063                 void             AddSegment(Segment* a);
    00064                 void                    ConvertLine(double aber,double Rmin,double Rmax);
    00065                 bool                            PointOnPolyline(Point*, double);
    00066                 bool                            PointOnArcseg(Point*,double);
    00067       double         CalcLength();
    00068                 G_Polyline&             operator=(G_Polyline&);
    00069
    00070         protected:
    00071                 int                     TestArc(TDLI<Segment>*,double aber,double Rmin,double Rmax,Point& center_p);
    00072                 void            insertArc(TDLI<Segment>*,int n, Point& center_p);
    00073
    00074                 static TDLI<Segment>    _PI;
    00075       bool _hasarcs;
    00076 };
    00077
    00078
    00080
    00086 class G_Polygon : public G_Polyline
    00087 {
    00088         public:
    00089                 G_Polygon();
    00090                 ~G_Polygon();
    00091                 G_Polygon& operator=(G_Polygon &other);
    00092
    00093                 double  CalcArea();
    00094                 bool            DirectionIsClockWise();
    00095                 void    ConvertLine(double aber,double Rmin,double Rmax);
    00096         int             PointInPolygon(const Point&, double);
    00097                 bool            ContainsHoles();
    00098       bool              CheckForHoles();
    00099                 bool            CheckForPerfectArc(Point& middle, double& radius);
    00100       void              SetHoles(bool val){_hasholes=val;};
    00101                 bool            RemoveZero();
    00102                 void            ConvertSplined(double Aber);
    00103       double   CalcLength();
    00104
    00105         protected:
    00106                 void  GetLRO(const Point& P, const Point& p1, const Point& p2, int &LRO1, int &LRO2,const double marge);
    00107                 int     TestArc_back(TDLI<Segment>*,double aber,double Rmin,double Rmax, Point& center_p);
    00108       bool _hasholes;
    00109
    00110 };
    00111
    00112 #endif

polyline.h Source File -- Thu Nov 28 21:24:56 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . -- Main Page