Branch data Line data Source code
1 : : //- Class: Cubit2DPoint
2 : : //-
3 : : //- Description: This file defines the Cubit2DPoint class which is a
4 : : //- standard two-dimensional point in space.
5 : : //-
6 : : //- Owner: Steve Storm
7 : :
8 : : #ifndef CUBIT2DPOINT_HPP
9 : : #define CUBIT2DPOINT_HPP
10 : :
11 : : #include "CubitDefines.h"
12 : : #include "CGMUtilConfigure.h"
13 : :
14 : : template <class X> class DLIList;
15 : :
16 : : class CUBIT_UTIL_EXPORT Cubit2DPoint
17 : : {
18 : : public:
19 : :
20 : : //- Heading: Constructors and Destructor
21 : : Cubit2DPoint(); //- Default constructor.
22 : :
23 : : Cubit2DPoint( const double x, const double y );
24 : : //- Constructor: create point from two components
25 : :
26 : : Cubit2DPoint( const double xy[2] );
27 : : //- Constructor: create point from array
28 : :
29 : : Cubit2DPoint( const Cubit2DPoint& copy_from ); //- Copy Constructor
30 : : Cubit2DPoint( const Cubit2DPoint* copy_from ); //- Copy Constructor
31 : :
32 : : //- Heading: Set and Inquire Functions
33 : : void set( const double x, const double y );
34 : : //- Change point components to {x}, {y}
35 : :
36 : : void set( const double xy[2] );
37 : : //- Change point components to xy[0], xy[1]
38 : :
39 : : void set( const Cubit2DPoint& to_copy );
40 : : //- Same as operator=(const Cubit2DPoint&)
41 : :
42 : : double x() const; //- Return x component of point
43 : : double y() const; //- Return y component of point
44 : :
45 : : void get_xy( double &x, double &y ); //- Get x, y components
46 : : void get_xy( double xy[3] ); //- Get xy array
47 : :
48 : : void x( const double x ); //- Set x component of point
49 : : void y( const double y ); //- Set y component of point
50 : :
51 : : void print_me();
52 : : //- Prints out the coordinates of this point.
53 : :
54 : : void min_max( const Cubit2DPoint &pnt2,
55 : : double &xmin, double &xmax,
56 : : double &ymin, double &ymax ) const;
57 : : //- Get min & max coordinates between this point & the
58 : : //- passed-in point. Analogous to a 2D bounding box.
59 : :
60 : : void update_min_max( Cubit2DPoint &min, Cubit2DPoint &max ) const;
61 : : //- Include this points coordinates in the given min-max bounding box.
62 : :
63 : : CubitBoolean is_on_line_segment( const Cubit2DPoint &end1,
64 : : const Cubit2DPoint &end2,
65 : : double tol = 1e-10 ) const;
66 : : //- Determine if this point is on the line segment defined by end1
67 : : //- and end2. Uses a triangle method for speed. Note that in this
68 : : //- implementation the tolerance is not how close the point is to
69 : : //- the line - rather, it is how small a triangle area needs to be
70 : : //- in order to consider its three points co-linear.
71 : :
72 : : Cubit2DPoint &operator=(const Cubit2DPoint &from);
73 : :
74 : : private:
75 : :
76 : : double xVal; //- x component of point.
77 : : double yVal; //- y component of point.
78 : : };
79 : :
80 : : inline Cubit2DPoint::Cubit2DPoint(const Cubit2DPoint& copy_from)
81 : : : xVal(copy_from.xVal), yVal(copy_from.yVal)
82 : : {}
83 : :
84 : : inline Cubit2DPoint::Cubit2DPoint(const Cubit2DPoint* copy_from)
85 : : : xVal(copy_from->xVal), yVal(copy_from->yVal)
86 : : {}
87 : :
88 : : inline Cubit2DPoint::Cubit2DPoint()
89 : : : xVal(0.0), yVal(0.0)
90 : : {}
91 : :
92 : 0 : inline Cubit2DPoint::Cubit2DPoint( const double x,
93 : : const double y )
94 : 0 : : xVal(x), yVal(y)
95 : 0 : {}
96 : :
97 : 0 : inline double Cubit2DPoint::x() const
98 : 0 : { return xVal; }
99 : 0 : inline double Cubit2DPoint::y() const
100 : 0 : { return yVal; }
101 : :
102 : : inline void Cubit2DPoint::x( const double x )
103 : : { xVal = x; }
104 : : inline void Cubit2DPoint::y( const double y )
105 : : { yVal = y; }
106 : :
107 : : inline void Cubit2DPoint::set( const double x,
108 : : const double y )
109 : : {
110 : : xVal = x;
111 : : yVal = y;
112 : : }
113 : :
114 : : inline void Cubit2DPoint::set( const double xy[2] )
115 : : {
116 : : xVal = xy[0];
117 : : yVal = xy[1];
118 : : }
119 : :
120 : : inline Cubit2DPoint& Cubit2DPoint::operator=(const Cubit2DPoint &from)
121 : : {
122 : : xVal = from.xVal;
123 : : yVal = from.yVal;
124 : : return *this;
125 : : }
126 : :
127 : : inline void Cubit2DPoint::set(const Cubit2DPoint& to_copy)
128 : : {
129 : : *this = to_copy;
130 : : }
131 : :
132 : : #endif
133 : :
134 : :
|