Branch data Line data Source code
1 : : //---------------------------------------------
2 : : // Class: GeomSeg
3 : : // Description: Simple segment class.
4 : : // Created by: David R. White
5 : : // Date: 7/9/02
6 : : //---------------------------------------------
7 : :
8 : : #ifndef GEOMSEG_HPP
9 : : #define GEOMSEG_HPP
10 : :
11 : : #include "CubitVector.hpp"
12 : : #include "CubitBox.hpp"
13 : : #include "GeomPoint.hpp"
14 : : class RefEntity;
15 : :
16 : : class GeomSeg
17 : : {
18 : : private:
19 : : RefEntity *myOwner;
20 : : GeomSeg *prevSeg, *nextSeg;
21 : : GeomPoint *myStart, *myEnd;
22 : : CubitBox boundingBox;
23 : : public:
24 : : GeomSeg( GeomPoint *start, GeomPoint *end, RefEntity *owner );
25 : : ~GeomSeg();
26 : : CubitBox& bounding_box();
27 : : void owner(RefEntity *owner);
28 : : RefEntity* owner();
29 : : GeomPoint* get_start();
30 : : GeomPoint* get_end();
31 : : void set_next( GeomSeg *tmp_next);
32 : : GeomSeg* get_next();
33 : : void set_prev( GeomSeg *tmp_prev);
34 : : GeomSeg* get_prev();
35 : :
36 : : };
37 : 0 : inline GeomSeg::GeomSeg( GeomPoint *start,
38 : : GeomPoint *end,
39 : 0 : RefEntity *owner )
40 : : {
41 : 0 : myOwner = owner;
42 : 0 : myStart = start;
43 : 0 : myEnd = end;
44 : 0 : prevSeg = NULL;
45 : 0 : nextSeg = NULL;
46 [ # # ][ # # ]: 0 : CubitVector min, max;
47 [ # # ][ # # ]: 0 : CubitVector p1 = start->coordinates();
48 [ # # ][ # # ]: 0 : CubitVector p2 = end->coordinates();
49 [ # # ][ # # ]: 0 : if ( p1.x() < p2.x() ) {
[ # # ]
50 [ # # ][ # # ]: 0 : min.x(p1.x());
51 [ # # ][ # # ]: 0 : max.x(p2.x());
52 : : } else {
53 [ # # ][ # # ]: 0 : min.x(p2.x());
54 [ # # ][ # # ]: 0 : max.x(p1.x());
55 : : }
56 [ # # ][ # # ]: 0 : if ( p1.y() < p2.y() ) {
[ # # ]
57 [ # # ][ # # ]: 0 : min.y(p1.y());
58 [ # # ][ # # ]: 0 : max.y(p2.y());
59 : : } else {
60 [ # # ][ # # ]: 0 : min.y(p2.y());
61 [ # # ][ # # ]: 0 : max.y(p1.y());
62 : : }
63 [ # # ][ # # ]: 0 : if ( p1.z() < p2.z() ) {
[ # # ]
64 [ # # ][ # # ]: 0 : min.z(p1.z());
65 [ # # ][ # # ]: 0 : max.z(p2.z());
66 : : } else {
67 [ # # ][ # # ]: 0 : min.z(p2.z());
68 [ # # ][ # # ]: 0 : max.z(p1.z());
69 : : }
70 [ # # ][ # # ]: 0 : boundingBox = CubitBox(min, max);
[ # # ]
71 : 0 : }
72 : 0 : inline GeomSeg::~GeomSeg()
73 : 0 : {}
74 : 0 : inline CubitBox& GeomSeg::bounding_box()
75 : 0 : {return boundingBox;}
76 : : inline void GeomSeg::owner(RefEntity *owner)
77 : : {myOwner = owner;}
78 : 0 : inline RefEntity* GeomSeg::owner()
79 : 0 : {return myOwner;}
80 : 0 : inline GeomPoint* GeomSeg::get_start()
81 : 0 : {return myStart;}
82 : 0 : inline GeomPoint* GeomSeg::get_end()
83 : 0 : {return myEnd;}
84 : 0 : inline void GeomSeg::set_next( GeomSeg *tmp_next)
85 : 0 : {nextSeg = tmp_next;}
86 : 0 : inline GeomSeg* GeomSeg::get_next()
87 : 0 : {return nextSeg;}
88 : 0 : inline void GeomSeg::set_prev( GeomSeg *tmp_prev)
89 : 0 : {prevSeg = tmp_prev;}
90 : 0 : inline GeomSeg* GeomSeg::get_prev()
91 : 0 : {return prevSeg;}
92 : :
93 : :
94 : :
95 : : #endif
96 : :
|