KiCad PCB EDA Suite
CROUNDSEGMENT2D Class Reference

#include <croundsegment2d.h>

Inheritance diagram for CROUNDSEGMENT2D:
COBJECT2D

Public Member Functions

 CROUNDSEGMENT2D (const SFVEC2F &aStart, const SFVEC2F &aEnd, float aWidth, const BOARD_ITEM &aBoardItem)
 
float GetRadius () const
 
float GetRadiusSquared () const
 
float GetWidth () const
 
float GetLength () const
 
const SFVEC2FGetStart () const
 
const SFVEC2FGetEnd () const
 
const SFVEC2FGetEnd_minus_Start () const
 
const SFVEC2FGetLeftStar () const
 
const SFVEC2FGetLeftEnd () const
 
const SFVEC2FGetLeftEnd_minus_Start () const
 
const SFVEC2FGetLeftDir () const
 
const SFVEC2FGetRightStar () const
 
const SFVEC2FGetRightEnd () const
 
const SFVEC2FGetRightEnd_minus_Start () const
 
const SFVEC2FGetRightDir () const
 
bool Overlaps (const CBBOX2D &aBBox) const override
 Function Overlaps. More...
 
bool Intersects (const CBBOX2D &aBBox) const override
 Function Intersects. More...
 
bool Intersect (const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut) const override
 Function Intersect. More...
 
INTERSECTION_RESULT IsBBoxInside (const CBBOX2D &aBBox) const override
 Function IsBBoxInside. More...
 
bool IsPointInside (const SFVEC2F &aPoint) const override
 
const BOARD_ITEMGetBoardItem () const
 
const CBBOX2DGetBBox () const
 
const SFVEC2FGetCentroid () const
 
OBJECT2D_TYPE GetObjectType () const
 

Protected Attributes

CBBOX2D m_bbox
 
SFVEC2F m_centroid
 
OBJECT2D_TYPE m_obj_type
 
const BOARD_ITEMm_boardItem
 

Private Attributes

RAYSEG2D m_segment
 
SFVEC2F m_leftStart
 
SFVEC2F m_leftEnd
 
SFVEC2F m_leftEndMinusStart
 
SFVEC2F m_leftDir
 
SFVEC2F m_rightStart
 
SFVEC2F m_rightEnd
 
SFVEC2F m_rightEndMinusStart
 
SFVEC2F m_rightDir
 
float m_radius
 
float m_radius_squared
 
float m_width
 

Friends

class CROUNDSEG
 

Detailed Description

Definition at line 35 of file croundsegment2d.h.

Constructor & Destructor Documentation

CROUNDSEGMENT2D::CROUNDSEGMENT2D ( const SFVEC2F aStart,
const SFVEC2F aEnd,
float  aWidth,
const BOARD_ITEM aBoardItem 
)

Definition at line 34 of file croundsegment2d.cpp.

References CBBOX2D::GetCenter(), CBBOX2D::IsInitialized(), COBJECT2D::m_bbox, COBJECT2D::m_centroid, RAYSEG2D::m_Dir, m_leftDir, m_leftEnd, m_leftEndMinusStart, m_leftStart, m_radius, m_radius_squared, m_rightDir, m_rightEnd, m_rightEndMinusStart, m_rightStart, m_segment, m_width, CBBOX2D::Max(), CBBOX2D::Min(), CBBOX2D::Reset(), CBBOX2D::ScaleNextUp(), and CBBOX2D::Set().

37  :
38  COBJECT2D( OBJ2D_ROUNDSEG, aBoardItem ),
39  m_segment( aStart, aEnd )
40 {
41  wxASSERT( aStart != aEnd );
42 
43  m_radius = (aWidth / 2.0f);
45  m_width = aWidth;
46 
47  SFVEC2F leftRadiusOffset( -m_segment.m_Dir.y * m_radius,
48  m_segment.m_Dir.x * m_radius );
49 
50  m_leftStart = aStart + leftRadiusOffset;
51  m_leftEnd = aEnd + leftRadiusOffset;
53  m_leftDir = glm::normalize( m_leftEndMinusStart );
54 
55  SFVEC2F rightRadiusOffset( -leftRadiusOffset.x,
56  -leftRadiusOffset.y );
57  m_rightStart = aEnd + rightRadiusOffset;
58  m_rightEnd = aStart + rightRadiusOffset;
60  m_rightDir = glm::normalize( m_rightEndMinusStart );
61 
62  m_bbox.Reset();
63  m_bbox.Set( aStart, aEnd );
64  m_bbox.Set( m_bbox.Min() - SFVEC2F( m_radius, m_radius ),
65  m_bbox.Max() + SFVEC2F( m_radius, m_radius ) );
68 
69  wxASSERT( m_bbox.IsInitialized() );
70 }
SFVEC2F m_rightEndMinusStart
bool IsInitialized() const
Function IsInitialized check if this bounding box is already initialized.
Definition: cbbox2d.cpp:79
SFVEC2F m_Dir
Definition: ray.h:91
void Reset()
Function Reset reset the bounding box to zero and de-initialized it.
Definition: cbbox2d.cpp:88
glm::vec2 SFVEC2F
Definition: xv3d_types.h:45
COBJECT2D(OBJECT2D_TYPE aObjType, const BOARD_ITEM &aBoardItem)
Definition: cobject2d.cpp:37
void Set(const SFVEC2F &aPbMin, const SFVEC2F &aPbMax)
Function Set Set bounding box with new parameters.
Definition: cbbox2d.cpp:61
SFVEC2F m_leftEndMinusStart
void ScaleNextUp()
Function ScaleNextUp scales a bounding box to the next float representation making it larger...
Definition: cbbox2d.cpp:164
CBBOX2D m_bbox
Definition: cobject2d.h:65
SFVEC2F GetCenter() const
Function GetCenter return the center point of the bounding box.
Definition: cbbox2d.cpp:121
SFVEC2F m_centroid
Definition: cobject2d.h:66
const SFVEC2F & Min() const
Function Min return the minimun vertex pointer.
Definition: cbbox2d.h:176
const SFVEC2F & Max() const
Function Max return the maximum vertex pointer.
Definition: cbbox2d.h:183

Member Function Documentation

const BOARD_ITEM& COBJECT2D::GetBoardItem ( ) const
inlineinherited

Definition at line 75 of file cobject2d.h.

References COBJECT2D::m_boardItem.

Referenced by C3D_RENDER_RAYTRACING::reload().

75 { return m_boardItem; }
const BOARD_ITEM & m_boardItem
Definition: cobject2d.h:69
const SFVEC2F& COBJECT2D::GetCentroid ( ) const
inlineinherited
const SFVEC2F& CROUNDSEGMENT2D::GetEnd ( ) const
inline

Definition at line 67 of file croundsegment2d.h.

References RAYSEG2D::m_End.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

67 { return m_segment.m_End; }
SFVEC2F m_End
Definition: ray.h:89
const SFVEC2F& CROUNDSEGMENT2D::GetEnd_minus_Start ( ) const
inline

Definition at line 68 of file croundsegment2d.h.

References RAYSEG2D::m_End_minus_start.

Referenced by OGL_Draw_segment().

68 { return m_segment.m_End_minus_start; }
SFVEC2F m_End_minus_start
Definition: ray.h:90
const SFVEC2F& CROUNDSEGMENT2D::GetLeftDir ( ) const
inline

Definition at line 73 of file croundsegment2d.h.

References m_leftDir.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

73 { return m_leftDir; }
const SFVEC2F& CROUNDSEGMENT2D::GetLeftEnd ( ) const
inline

Definition at line 71 of file croundsegment2d.h.

References m_leftEnd.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

71 { return m_leftEnd; }
const SFVEC2F& CROUNDSEGMENT2D::GetLeftEnd_minus_Start ( ) const
inline

Definition at line 72 of file croundsegment2d.h.

References m_leftEndMinusStart.

72 { return m_leftEndMinusStart; }
SFVEC2F m_leftEndMinusStart
const SFVEC2F& CROUNDSEGMENT2D::GetLeftStar ( ) const
inline

Definition at line 70 of file croundsegment2d.h.

References m_leftStart.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

70 { return m_leftStart; }
float CROUNDSEGMENT2D::GetLength ( void  ) const
inline

Definition at line 64 of file croundsegment2d.h.

References RAYSEG2D::m_Length.

Referenced by OGL_Draw_segment().

64 { return m_segment.m_Length; }
float m_Length
Definition: ray.h:93
float CROUNDSEGMENT2D::GetRadius ( ) const
inline
float CROUNDSEGMENT2D::GetRadiusSquared ( ) const
inline

Definition at line 62 of file croundsegment2d.h.

References m_radius_squared.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

62 { return m_radius_squared; }
const SFVEC2F& CROUNDSEGMENT2D::GetRightDir ( ) const
inline

Definition at line 78 of file croundsegment2d.h.

References m_rightDir.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

78 { return m_rightDir; }
const SFVEC2F& CROUNDSEGMENT2D::GetRightEnd ( ) const
inline

Definition at line 76 of file croundsegment2d.h.

References m_rightEnd.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

76 { return m_rightEnd; }
const SFVEC2F& CROUNDSEGMENT2D::GetRightEnd_minus_Start ( ) const
inline

Definition at line 77 of file croundsegment2d.h.

References m_rightEndMinusStart.

77 { return m_rightEndMinusStart; }
SFVEC2F m_rightEndMinusStart
const SFVEC2F& CROUNDSEGMENT2D::GetRightStar ( ) const
inline

Definition at line 75 of file croundsegment2d.h.

References m_rightStart.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

75 { return m_rightStart; }
const SFVEC2F& CROUNDSEGMENT2D::GetStart ( ) const
inline

Definition at line 66 of file croundsegment2d.h.

References RAYSEG2D::m_Start.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer(), and OGL_Draw_segment().

66 { return m_segment.m_Start; }
SFVEC2F m_Start
Definition: ray.h:88
float CROUNDSEGMENT2D::GetWidth ( void  ) const
inline

Definition at line 63 of file croundsegment2d.h.

References m_width.

Referenced by OGL_Draw_segment().

63 { return m_width; }
bool CROUNDSEGMENT2D::Intersect ( const RAYSEG2D aSegRay,
float *  aOutT,
SFVEC2F aNormalOut 
) const
overridevirtual

Function Intersect.

Intersect

Parameters
aSegRay
aOutTa value between 0.0 and 1.0 in relation to the time of the hit of the segment
aNormalOut
Returns

Implements COBJECT2D.

Definition at line 136 of file croundsegment2d.cpp.

References RAYSEG2D::IntersectCircle(), RAYSEG2D::IntersectSegment(), IsPointInside(), RAYSEG2D::m_End, m_leftDir, m_leftEndMinusStart, m_leftStart, m_radius, m_rightDir, m_rightEndMinusStart, m_rightStart, m_segment, and RAYSEG2D::m_Start.

139 {
140  wxASSERT( aOutT );
141  wxASSERT( aNormalOut );
142 
143  const bool start_is_inside = IsPointInside( aSegRay.m_Start );
144  const bool end_is_inside = IsPointInside( aSegRay.m_End );
145 
146  // If segment if inside there are no hits
147  if( start_is_inside && end_is_inside )
148  return false;
149 
150  bool hitted = false;
151 
152  float closerHitT = FLT_MAX;
153  float farHitT = FLT_MAX;
154 
155  SFVEC2F closerHitNormal;
156  SFVEC2F farHitNormal;
157 
158  float leftSegT;
159  const bool leftSegmentHit = aSegRay.IntersectSegment( m_leftStart,
161  &leftSegT );
162 
163  if( leftSegmentHit )
164  {
165  hitted = true;
166  closerHitT = leftSegT;
167  farHitT = leftSegT;
168 
169  closerHitNormal = SFVEC2F( -m_leftDir.y, m_leftDir.x );
170  farHitNormal = SFVEC2F( -m_leftDir.y, m_leftDir.x );
171  }
172 
173  float rightSegT;
174  const bool rightSegmentHit = aSegRay.IntersectSegment( m_rightStart,
176  &rightSegT );
177 
178  if( rightSegmentHit )
179  {
180  if( !start_is_inside )
181  if( (hitted == false) || (rightSegT < closerHitT) )
182  {
183  closerHitT = rightSegT;
184  closerHitNormal = SFVEC2F( -m_rightDir.y, m_rightDir.x );
185  }
186 
187  if( start_is_inside )
188  if( (hitted == false) || (rightSegT > farHitT) )
189  {
190  farHitT = rightSegT;
191  farHitNormal = SFVEC2F( -m_rightDir.y, m_rightDir.x );
192  }
193 
194  hitted = true;
195  }
196 
197  float circleStart_T0;
198  float circleStart_T1;
199  SFVEC2F circleStart_N0;
200  SFVEC2F circleStart_N1;
201 
202  const bool startCircleHit = aSegRay.IntersectCircle( m_segment.m_Start, m_radius,
203  &circleStart_T0, &circleStart_T1,
204  &circleStart_N0, &circleStart_N1 );
205 
206  if( startCircleHit )
207  {
208  if( circleStart_T0 > 0.0f )
209  {
210  if( !start_is_inside )
211  if( (hitted == false) || (circleStart_T0 < closerHitT) )
212  {
213  closerHitT = circleStart_T0;
214  closerHitNormal = circleStart_N0;
215  }
216 
217  if( start_is_inside )
218  if( (hitted == false) || (circleStart_T1 > farHitT) )
219  {
220  farHitT = circleStart_T1;
221  farHitNormal = circleStart_N1;
222  }
223  }
224  else
225  {
226  // This can only happen if the ray starts inside
227  if( (hitted == false) || (circleStart_T1 > farHitT) )
228  {
229  farHitT = circleStart_T1;
230  farHitNormal = circleStart_N1;
231  }
232  }
233 
234  hitted = true;
235  }
236 
237  float circleEnd_T0;
238  float circleEnd_T1;
239  SFVEC2F circleEnd_N0;
240  SFVEC2F circleEnd_N1;
241 
242  const bool rightCircleHit = aSegRay.IntersectCircle( m_segment.m_End, m_radius,
243  &circleEnd_T0, &circleEnd_T1,
244  &circleEnd_N0, &circleEnd_N1 );
245  if( rightCircleHit )
246  {
247  if( circleEnd_T0 > 0.0f )
248  {
249  if( !start_is_inside )
250  if( (hitted == false) || (circleEnd_T0 < closerHitT) )
251  {
252  closerHitT = circleEnd_T0;
253  closerHitNormal = circleEnd_N0;
254  }
255 
256  if( start_is_inside )
257  if( (hitted == false) || (circleEnd_T1 > farHitT) )
258  {
259  farHitT = circleEnd_T1;
260  farHitNormal = circleEnd_N1;
261  }
262  }
263  else
264  {
265  // This can only happen if the ray starts inside
266  if( (hitted == false) || (circleEnd_T1 > farHitT) )
267  {
268  farHitT = circleEnd_T1;
269  farHitNormal = circleEnd_N1;
270  }
271  }
272 
273  hitted = true;
274  }
275 
276  if( hitted )
277  {
278  if( !start_is_inside )
279  {
280  *aOutT = closerHitT;
281  //wxASSERT( (closerHitT > 0.0f) && (closerHitT <= 1.0f) );
282  *aNormalOut = closerHitNormal;
283  }
284  else
285  {
286  wxASSERT( (farHitT >= 0.0f) && (farHitT <= 1.0f) );
287 
288  *aOutT = farHitT;
289  *aNormalOut = -farHitNormal; // the normal started inside, so invert it
290  }
291  }
292 
293  return hitted;
294 }
SFVEC2F m_rightEndMinusStart
glm::vec2 SFVEC2F
Definition: xv3d_types.h:45
SFVEC2F m_End
Definition: ray.h:89
SFVEC2F m_leftEndMinusStart
SFVEC2F m_Start
Definition: ray.h:88
bool IsPointInside(const SFVEC2F &aPoint) const override
bool IntersectCircle(const SFVEC2F &aCenter, float aRadius, float *aOutT0, float *aOutT1, SFVEC2F *aOutNormalT0, SFVEC2F *aOutNormalT1) const
Definition: ray.cpp:346
bool IntersectSegment(const SFVEC2F &aStart, const SFVEC2F &aEnd_minus_start, float *aOutT) const
Definition: ray.cpp:289
bool CROUNDSEGMENT2D::Intersects ( const CBBOX2D aBBox) const
overridevirtual

Function Intersects.

Intersects - a.Intersects(b) ⇔ !a.Disjoint(b) ⇔ !(a ∩ b = ∅) It intersects if the result intersection is not null

Parameters
aBBox
Returns

Implements COBJECT2D.

Definition at line 73 of file croundsegment2d.cpp.

References CBBOX2D::Intersects(), IntersectSegment(), COBJECT2D::m_bbox, RAYSEG2D::m_End, m_leftEndMinusStart, m_leftStart, m_radius_squared, m_rightEndMinusStart, m_rightStart, m_segment, RAYSEG2D::m_Start, CBBOX2D::Max(), and CBBOX2D::Min().

74 {
75  if( !m_bbox.Intersects( aBBox ) )
76  return false;
77 
78  if( (aBBox.Max().x > m_bbox.Max().x) &&
79  (aBBox.Max().y > m_bbox.Max().x) &&
80  (aBBox.Min().x < m_bbox.Min().x) &&
81  (aBBox.Min().y < m_bbox.Min().y)
82  )
83  return true;
84 
85  SFVEC2F v[4];
86 
87  v[0] = aBBox.Min();
88  v[1] = SFVEC2F( aBBox.Min().x, aBBox.Max().y );
89  v[2] = aBBox.Max();
90  v[3] = SFVEC2F( aBBox.Max().x, aBBox.Min().y );
91 
92  // Test against the main rectangle segment
93  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[0], v[1] - v[0] ) )
94  return true;
95 
96  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[1], v[2] - v[1] ) )
97  return true;
98 
99  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[2], v[3] - v[2] ) )
100  return true;
101 
102  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[3], v[0] - v[3] ) )
103  return true;
104 
105 
106  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[0], v[1] - v[0] ) )
107  return true;
108 
109  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[1], v[2] - v[1] ) )
110  return true;
111 
112  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[2], v[3] - v[2] ) )
113  return true;
114 
115  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[3], v[0] - v[3] ) )
116  return true;
117 
118  // Test the two circles
120  return true;
121 
123  return true;
124 
125  return false;
126 }
SFVEC2F m_rightEndMinusStart
bool Intersects(const CBBOX2D &aBBox) const
Function Intersects test if a bounding box intersects this box.
Definition: cbbox2d.cpp:213
glm::vec2 SFVEC2F
Definition: xv3d_types.h:45
SFVEC2F m_End
Definition: ray.h:89
SFVEC2F m_leftEndMinusStart
bool IntersectSegment(const SFVEC2F &aStartA, const SFVEC2F &aEnd_minus_startA, const SFVEC2F &aStartB, const SFVEC2F &aEnd_minus_startB)
Definition: ray.cpp:181
CBBOX2D m_bbox
Definition: cobject2d.h:65
SFVEC2F m_Start
Definition: ray.h:88
const SFVEC2F & Min() const
Function Min return the minimun vertex pointer.
Definition: cbbox2d.h:176
const SFVEC2F & Max() const
Function Max return the maximum vertex pointer.
Definition: cbbox2d.h:183
INTERSECTION_RESULT CROUNDSEGMENT2D::IsBBoxInside ( const CBBOX2D aBBox) const
overridevirtual

Function IsBBoxInside.

Tests if the bouding is out, intersects or is complety inside

Parameters
aBBox- The bounding box to test
Returns
INTERSECTION_RESULT

Implements COBJECT2D.

Definition at line 297 of file croundsegment2d.cpp.

References CBBOX2D::Intersects(), INTR_FULL_INSIDE, INTR_INTERSECTS, INTR_MISSES, IsPointInside(), COBJECT2D::m_bbox, CBBOX2D::Max(), and CBBOX2D::Min().

298 {
299  if( !m_bbox.Intersects( aBBox ) )
300  return INTR_MISSES;
301 
302  SFVEC2F v[4];
303 
304  v[0] = aBBox.Min();
305  v[1] = aBBox.Max();
306  v[2] = SFVEC2F( aBBox.Min().x, aBBox.Max().y );
307  v[3] = SFVEC2F( aBBox.Max().x, aBBox.Min().y );
308 
309  bool isInside[4];
310 
311  isInside[0] = IsPointInside( v[0] );
312  isInside[1] = IsPointInside( v[1] );
313  isInside[2] = IsPointInside( v[2] );
314  isInside[3] = IsPointInside( v[3] );
315 
316  // Check if all points are inside the circle
317  if( isInside[0] &&
318  isInside[1] &&
319  isInside[2] &&
320  isInside[3] )
321  return INTR_FULL_INSIDE;
322 
323  // Check if any point is inside the circle
324  if( isInside[0] ||
325  isInside[1] ||
326  isInside[2] ||
327  isInside[3] )
328  return INTR_INTERSECTS;
329 
330  return INTR_MISSES;
331 }
bool Intersects(const CBBOX2D &aBBox) const
Function Intersects test if a bounding box intersects this box.
Definition: cbbox2d.cpp:213
glm::vec2 SFVEC2F
Definition: xv3d_types.h:45
CBBOX2D m_bbox
Definition: cobject2d.h:65
const SFVEC2F & Min() const
Function Min return the minimun vertex pointer.
Definition: cbbox2d.h:176
bool IsPointInside(const SFVEC2F &aPoint) const override
const SFVEC2F & Max() const
Function Max return the maximum vertex pointer.
Definition: cbbox2d.h:183
bool CROUNDSEGMENT2D::IsPointInside ( const SFVEC2F aPoint) const
overridevirtual

Implements COBJECT2D.

Definition at line 334 of file croundsegment2d.cpp.

References RAYSEG2D::DistanceToPointSquared(), m_radius_squared, and m_segment.

Referenced by Intersect(), and IsBBoxInside().

335 {
336  float dSquared = m_segment.DistanceToPointSquared( aPoint );
337 
338  if( dSquared <= m_radius_squared )
339  return true;
340 
341  return false;
342 }
float DistanceToPointSquared(const SFVEC2F &aPoint) const
Definition: ray.cpp:323
bool CROUNDSEGMENT2D::Overlaps ( const CBBOX2D aBBox) const
overridevirtual

Function Overlaps.

Test if the box overlaps the object Conformance The function overlaps implements function Overlaps from the OGC Simple Feature Specification. http://www.opengeospatial.org/standards/sfa a.Overlaps(b) ⇔ ( dim(I(a)) = dim(I(b)) = dim(I(a)I(b))) ∧ (a ∩ b ≠ a) ∧ (a ∩ b ≠ b) It means that the result dimension of an overlap is the same dimentions of the bounding box (so the overlap cannot be a point or a line) and one of the boxes cannot full contain the other box.

Parameters
aBBox- The bounding box to test
Returns
true if the BBox intersects the object or is inside it

Implements COBJECT2D.

Definition at line 129 of file croundsegment2d.cpp.

130 {
131  // NOT IMPLEMENTED
132  return false;
133 }

Friends And Related Function Documentation

friend class CROUNDSEG
friend

Definition at line 38 of file croundsegment2d.h.

Member Data Documentation

const BOARD_ITEM& COBJECT2D::m_boardItem
protectedinherited

Definition at line 69 of file cobject2d.h.

Referenced by COBJECT2D::GetBoardItem().

SFVEC2F CROUNDSEGMENT2D::m_leftDir
private

Definition at line 46 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetLeftDir(), and Intersect().

SFVEC2F CROUNDSEGMENT2D::m_leftEnd
private

Definition at line 44 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), and GetLeftEnd().

SFVEC2F CROUNDSEGMENT2D::m_leftEndMinusStart
private

Definition at line 45 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetLeftEnd_minus_Start(), Intersect(), and Intersects().

SFVEC2F CROUNDSEGMENT2D::m_leftStart
private

Definition at line 43 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetLeftStar(), Intersect(), and Intersects().

OBJECT2D_TYPE COBJECT2D::m_obj_type
protectedinherited

Definition at line 67 of file cobject2d.h.

Referenced by COBJECT2D::COBJECT2D(), and COBJECT2D::GetObjectType().

float CROUNDSEGMENT2D::m_radius
private

Definition at line 53 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetRadius(), and Intersect().

float CROUNDSEGMENT2D::m_radius_squared
private

Definition at line 54 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetRadiusSquared(), Intersects(), and IsPointInside().

SFVEC2F CROUNDSEGMENT2D::m_rightDir
private

Definition at line 51 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetRightDir(), and Intersect().

SFVEC2F CROUNDSEGMENT2D::m_rightEnd
private

Definition at line 49 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), and GetRightEnd().

SFVEC2F CROUNDSEGMENT2D::m_rightEndMinusStart
private

Definition at line 50 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetRightEnd_minus_Start(), Intersect(), and Intersects().

SFVEC2F CROUNDSEGMENT2D::m_rightStart
private

Definition at line 48 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), GetRightStar(), Intersect(), and Intersects().

RAYSEG2D CROUNDSEGMENT2D::m_segment
private

Definition at line 41 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), Intersect(), Intersects(), and IsPointInside().

float CROUNDSEGMENT2D::m_width
private

Definition at line 55 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), and GetWidth().


The documentation for this class was generated from the following files: