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::CROUNDSEGMENT2D ( const SFVEC2F aStart,
const SFVEC2F aEnd,
float  aWidth,
const BOARD_ITEM aBoardItem 
)

Definition at line 34 of file croundsegment2d.cpp.

36  : COBJECT2D( OBJECT2D_TYPE::ROUNDSEG, aBoardItem ), m_segment( aStart, aEnd )
37 {
38  wxASSERT( aStart != aEnd );
39 
40  m_radius = (aWidth / 2.0f);
42  m_width = aWidth;
43 
44  SFVEC2F leftRadiusOffset( -m_segment.m_Dir.y * m_radius,
45  m_segment.m_Dir.x * m_radius );
46 
47  m_leftStart = aStart + leftRadiusOffset;
48  m_leftEnd = aEnd + leftRadiusOffset;
50  m_leftDir = glm::normalize( m_leftEndMinusStart );
51 
52  SFVEC2F rightRadiusOffset( -leftRadiusOffset.x,
53  -leftRadiusOffset.y );
54  m_rightStart = aEnd + rightRadiusOffset;
55  m_rightEnd = aStart + rightRadiusOffset;
57  m_rightDir = glm::normalize( m_rightEndMinusStart );
58 
59  m_bbox.Reset();
60  m_bbox.Set( aStart, aEnd );
65 
66  wxASSERT( m_bbox.IsInitialized() );
67 }
SFVEC2F m_rightEndMinusStart
const SFVEC2F & Min() const
Function Min return the minimun vertex pointer.
Definition: cbbox2d.h:176
SFVEC2F m_Dir
Definition: ray.h:115
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
bool IsInitialized() const
Function IsInitialized check if this bounding box is already initialized.
Definition: cbbox2d.cpp:79
const SFVEC2F & Max() const
Function Max return the maximum vertex pointer.
Definition: cbbox2d.h:183
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 m_centroid
Definition: cobject2d.h:66
SFVEC2F GetCenter() const
Function GetCenter return the center point of the bounding box.
Definition: cbbox2d.cpp:121

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(), ROUNDSEG, CBBOX2D::ScaleNextUp(), and CBBOX2D::Set().

Member Function Documentation

◆ GetBBox()

◆ GetBoardItem()

const BOARD_ITEM& COBJECT2D::GetBoardItem ( ) const
inlineinherited

Definition at line 75 of file cobject2d.h.

75 { return m_boardItem; }
const BOARD_ITEM & m_boardItem
Definition: cobject2d.h:69

References COBJECT2D::m_boardItem.

Referenced by C3D_RENDER_RAYTRACING::createItemsFromContainer(), and C3D_RENDER_RAYTRACING::reload().

◆ GetCentroid()

const SFVEC2F& COBJECT2D::GetCentroid ( ) const
inlineinherited

◆ GetEnd()

const SFVEC2F& CROUNDSEGMENT2D::GetEnd ( ) const
inline

Definition at line 67 of file croundsegment2d.h.

67 { return m_segment.m_End; }
SFVEC2F m_End
Definition: ray.h:113

References RAYSEG2D::m_End, and m_segment.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetEnd_minus_Start()

const SFVEC2F& CROUNDSEGMENT2D::GetEnd_minus_Start ( ) const
inline

Definition at line 68 of file croundsegment2d.h.

68 { return m_segment.m_End_minus_start; }
SFVEC2F m_End_minus_start
Definition: ray.h:114

References RAYSEG2D::m_End_minus_start, and m_segment.

Referenced by OGL_Draw_segment().

◆ GetLeftDir()

const SFVEC2F& CROUNDSEGMENT2D::GetLeftDir ( ) const
inline

Definition at line 73 of file croundsegment2d.h.

73 { return m_leftDir; }

References m_leftDir.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetLeftEnd()

const SFVEC2F& CROUNDSEGMENT2D::GetLeftEnd ( ) const
inline

Definition at line 71 of file croundsegment2d.h.

71 { return m_leftEnd; }

References m_leftEnd.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetLeftEnd_minus_Start()

const SFVEC2F& CROUNDSEGMENT2D::GetLeftEnd_minus_Start ( ) const
inline

Definition at line 72 of file croundsegment2d.h.

72 { return m_leftEndMinusStart; }
SFVEC2F m_leftEndMinusStart

References m_leftEndMinusStart.

◆ GetLeftStar()

const SFVEC2F& CROUNDSEGMENT2D::GetLeftStar ( ) const
inline

Definition at line 70 of file croundsegment2d.h.

70 { return m_leftStart; }

References m_leftStart.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetLength()

float CROUNDSEGMENT2D::GetLength ( ) const
inline

Definition at line 64 of file croundsegment2d.h.

64 { return m_segment.m_Length; }
float m_Length
Definition: ray.h:117

References RAYSEG2D::m_Length, and m_segment.

Referenced by OGL_Draw_segment().

◆ GetObjectType()

◆ GetRadius()

float CROUNDSEGMENT2D::GetRadius ( ) const
inline

◆ GetRadiusSquared()

float CROUNDSEGMENT2D::GetRadiusSquared ( ) const
inline

Definition at line 62 of file croundsegment2d.h.

62 { return m_radius_squared; }

References m_radius_squared.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetRightDir()

const SFVEC2F& CROUNDSEGMENT2D::GetRightDir ( ) const
inline

Definition at line 78 of file croundsegment2d.h.

78 { return m_rightDir; }

References m_rightDir.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetRightEnd()

const SFVEC2F& CROUNDSEGMENT2D::GetRightEnd ( ) const
inline

Definition at line 76 of file croundsegment2d.h.

76 { return m_rightEnd; }

References m_rightEnd.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetRightEnd_minus_Start()

const SFVEC2F& CROUNDSEGMENT2D::GetRightEnd_minus_Start ( ) const
inline

Definition at line 77 of file croundsegment2d.h.

77 { return m_rightEndMinusStart; }
SFVEC2F m_rightEndMinusStart

References m_rightEndMinusStart.

◆ GetRightStar()

const SFVEC2F& CROUNDSEGMENT2D::GetRightStar ( ) const
inline

Definition at line 75 of file croundsegment2d.h.

75 { return m_rightStart; }

References m_rightStart.

Referenced by C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer().

◆ GetStart()

const SFVEC2F& CROUNDSEGMENT2D::GetStart ( ) const
inline

Definition at line 66 of file croundsegment2d.h.

66 { return m_segment.m_Start; }
SFVEC2F m_Start
Definition: ray.h:112

References m_segment, and RAYSEG2D::m_Start.

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

◆ GetWidth()

float CROUNDSEGMENT2D::GetWidth ( ) const
inline

Definition at line 63 of file croundsegment2d.h.

63 { return m_width; }

References m_width.

Referenced by OGL_Draw_segment().

◆ Intersect()

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 133 of file croundsegment2d.cpp.

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

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.

◆ Intersects()

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 70 of file croundsegment2d.cpp.

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

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().

◆ IsBBoxInside()

INTERSECTION_RESULT CROUNDSEGMENT2D::IsBBoxInside ( const CBBOX2D aBBox) const
overridevirtual

Function IsBBoxInside.

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

Returns
INTERSECTION_RESULT

Implements COBJECT2D.

Definition at line 294 of file croundsegment2d.cpp.

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

References FULL_INSIDE, INTERSECTS, CBBOX2D::Intersects(), IsPointInside(), COBJECT2D::m_bbox, CBBOX2D::Max(), CBBOX2D::Min(), and MISSES.

◆ IsPointInside()

bool CROUNDSEGMENT2D::IsPointInside ( const SFVEC2F aPoint) const
overridevirtual

Implements COBJECT2D.

Definition at line 331 of file croundsegment2d.cpp.

332 {
333  float dSquared = m_segment.DistanceToPointSquared( aPoint );
334 
335  if( dSquared <= m_radius_squared )
336  return true;
337 
338  return false;
339 }
float DistanceToPointSquared(const SFVEC2F &aPoint) const
Definition: ray.cpp:327

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

Referenced by Intersect(), and IsBBoxInside().

◆ Overlaps()

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 126 of file croundsegment2d.cpp.

127 {
128  // NOT IMPLEMENTED
129  return false;
130 }

Friends And Related Function Documentation

◆ CROUNDSEG

friend class CROUNDSEG
friend

Definition at line 38 of file croundsegment2d.h.

Member Data Documentation

◆ m_bbox

◆ m_boardItem

const BOARD_ITEM& COBJECT2D::m_boardItem
protectedinherited

Definition at line 69 of file cobject2d.h.

Referenced by COBJECT2D::GetBoardItem().

◆ m_centroid

◆ m_leftDir

SFVEC2F CROUNDSEGMENT2D::m_leftDir
private

Definition at line 46 of file croundsegment2d.h.

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

◆ m_leftEnd

SFVEC2F CROUNDSEGMENT2D::m_leftEnd
private

Definition at line 44 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), and GetLeftEnd().

◆ m_leftEndMinusStart

SFVEC2F CROUNDSEGMENT2D::m_leftEndMinusStart
private

Definition at line 45 of file croundsegment2d.h.

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

◆ m_leftStart

SFVEC2F CROUNDSEGMENT2D::m_leftStart
private

Definition at line 43 of file croundsegment2d.h.

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

◆ m_obj_type

OBJECT2D_TYPE COBJECT2D::m_obj_type
protectedinherited

Definition at line 67 of file cobject2d.h.

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

◆ m_radius

float CROUNDSEGMENT2D::m_radius
private

Definition at line 53 of file croundsegment2d.h.

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

◆ m_radius_squared

float CROUNDSEGMENT2D::m_radius_squared
private

Definition at line 54 of file croundsegment2d.h.

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

◆ m_rightDir

SFVEC2F CROUNDSEGMENT2D::m_rightDir
private

Definition at line 51 of file croundsegment2d.h.

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

◆ m_rightEnd

SFVEC2F CROUNDSEGMENT2D::m_rightEnd
private

Definition at line 49 of file croundsegment2d.h.

Referenced by CROUNDSEGMENT2D(), and GetRightEnd().

◆ m_rightEndMinusStart

SFVEC2F CROUNDSEGMENT2D::m_rightEndMinusStart
private

Definition at line 50 of file croundsegment2d.h.

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

◆ m_rightStart

SFVEC2F CROUNDSEGMENT2D::m_rightStart
private

Definition at line 48 of file croundsegment2d.h.

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

◆ m_segment

RAYSEG2D CROUNDSEGMENT2D::m_segment
private

◆ m_width

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: