KiCad PCB EDA Suite
ROUND_SEGMENT_2D Class Reference

#include <round_segment_2d.h>

Inheritance diagram for ROUND_SEGMENT_2D:
OBJECT_2D

Public Member Functions

 ROUND_SEGMENT_2D (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 BBOX_2D &aBBox) const override
 Test if the box overlaps the object. More...
 
bool Intersects (const BBOX_2D &aBBox) const override
 a.Intersects(b) ⇔ !a.Disjoint(b) ⇔ !(a ∩ b = ∅) More...
 
bool Intersect (const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut) const override
 
INTERSECTION_RESULT IsBBoxInside (const BBOX_2D &aBBox) const override
 Test this object if it's completely outside, intersects, or is completely inside aBBox. More...
 
bool IsPointInside (const SFVEC2F &aPoint) const override
 
const BOARD_ITEMGetBoardItem () const
 
const BBOX_2DGetBBox () const
 
const SFVEC2FGetCentroid () const
 
OBJECT_2D_TYPE GetObjectType () const
 

Protected Attributes

BBOX_2D m_bbox
 
SFVEC2F m_centroid
 
OBJECT_2D_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 ROUND_SEGMENT
 

Detailed Description

Definition at line 38 of file round_segment_2d.h.

Constructor & Destructor Documentation

◆ ROUND_SEGMENT_2D()

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

Definition at line 33 of file round_segment_2d.cpp.

34  :
35  OBJECT_2D( OBJECT_2D_TYPE::ROUNDSEG, aBoardItem ),
36  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, m_segment.m_Dir.x * m_radius );
45 
46  m_leftStart = aStart + leftRadiusOffset;
47  m_leftEnd = aEnd + leftRadiusOffset;
49  m_leftDir = glm::normalize( m_leftEndMinusStart );
50 
51  SFVEC2F rightRadiusOffset( -leftRadiusOffset.x, -leftRadiusOffset.y );
52  m_rightStart = aEnd + rightRadiusOffset;
53  m_rightEnd = aStart + rightRadiusOffset;
55  m_rightDir = glm::normalize( m_rightEndMinusStart );
56 
57  m_bbox.Reset();
58  m_bbox.Set( aStart, aEnd );
63 
64  wxASSERT( m_bbox.IsInitialized() );
65 }
BBOX_2D m_bbox
Definition: object_2d.h:110
SFVEC2F GetCenter() const
Definition: bbox_2d.cpp:119
void Set(const SFVEC2F &aPbMin, const SFVEC2F &aPbMax)
Set bounding box with new parameters.
Definition: bbox_2d.cpp:61
SFVEC2F m_rightEndMinusStart
SFVEC2F m_Dir
Definition: ray.h:115
SFVEC2F m_centroid
Definition: object_2d.h:111
const SFVEC2F & Max() const
Definition: bbox_2d.h:172
OBJECT_2D(OBJECT_2D_TYPE aObjType, const BOARD_ITEM &aBoardItem)
Definition: object_2d.cpp:36
glm::vec2 SFVEC2F
Definition: xv3d_types.h:42
void Reset()
Reset the bounding box to zero and uninitialize it.
Definition: bbox_2d.cpp:86
SFVEC2F m_leftEndMinusStart
const SFVEC2F & Min() const
Definition: bbox_2d.h:167
void ScaleNextUp()
Scale a bounding box to the next float representation making it larger.
Definition: bbox_2d.cpp:162
bool IsInitialized() const
Check if this bounding box is already initialized.
Definition: bbox_2d.cpp:79

References BBOX_2D::GetCenter(), BBOX_2D::IsInitialized(), OBJECT_2D::m_bbox, OBJECT_2D::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, BBOX_2D::Max(), BBOX_2D::Min(), BBOX_2D::Reset(), ROUNDSEG, BBOX_2D::ScaleNextUp(), and BBOX_2D::Set().

Member Function Documentation

◆ GetBBox()

◆ GetBoardItem()

const BOARD_ITEM& OBJECT_2D::GetBoardItem ( ) const
inlineinherited

Definition at line 66 of file object_2d.h.

66 { return m_boardItem; }
const BOARD_ITEM & m_boardItem
Definition: object_2d.h:114

References OBJECT_2D::m_boardItem.

Referenced by RENDER_3D_RAYTRACE::createItemsFromContainer().

◆ GetCentroid()

const SFVEC2F& OBJECT_2D::GetCentroid ( ) const
inlineinherited

Definition at line 105 of file object_2d.h.

105 { return m_centroid; }
SFVEC2F m_centroid
Definition: object_2d.h:111

References OBJECT_2D::m_centroid.

Referenced by LAYER_ITEM::LAYER_ITEM(), sortByCentroidX(), sortByCentroidY(), and sortByCentroidZ().

◆ GetEnd()

const SFVEC2F& ROUND_SEGMENT_2D::GetEnd ( ) const
inline

Definition at line 50 of file round_segment_2d.h.

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

References RAYSEG2D::m_End, and m_segment.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetEnd_minus_Start()

const SFVEC2F& ROUND_SEGMENT_2D::GetEnd_minus_Start ( ) const
inline

Definition at line 51 of file round_segment_2d.h.

51 { 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 DrawSegment().

◆ GetLeftDir()

const SFVEC2F& ROUND_SEGMENT_2D::GetLeftDir ( ) const
inline

Definition at line 56 of file round_segment_2d.h.

56 { return m_leftDir; }

References m_leftDir.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetLeftEnd()

const SFVEC2F& ROUND_SEGMENT_2D::GetLeftEnd ( ) const
inline

Definition at line 54 of file round_segment_2d.h.

54 { return m_leftEnd; }

References m_leftEnd.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetLeftEnd_minus_Start()

const SFVEC2F& ROUND_SEGMENT_2D::GetLeftEnd_minus_Start ( ) const
inline

Definition at line 55 of file round_segment_2d.h.

55 { return m_leftEndMinusStart; }
SFVEC2F m_leftEndMinusStart

References m_leftEndMinusStart.

◆ GetLeftStar()

const SFVEC2F& ROUND_SEGMENT_2D::GetLeftStar ( ) const
inline

Definition at line 53 of file round_segment_2d.h.

53 { return m_leftStart; }

References m_leftStart.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetLength()

float ROUND_SEGMENT_2D::GetLength ( ) const
inline

Definition at line 47 of file round_segment_2d.h.

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

References RAYSEG2D::m_Length, and m_segment.

Referenced by DrawSegment().

◆ GetObjectType()

◆ GetRadius()

float ROUND_SEGMENT_2D::GetRadius ( ) const
inline

Definition at line 44 of file round_segment_2d.h.

44 { return m_radius; }

References m_radius.

Referenced by RENDER_3D_LEGACY::addObjectTriangles(), DrawSegment(), and ROUND_SEGMENT::ROUND_SEGMENT().

◆ GetRadiusSquared()

float ROUND_SEGMENT_2D::GetRadiusSquared ( ) const
inline

Definition at line 45 of file round_segment_2d.h.

45 { return m_radius_squared; }

References m_radius_squared.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetRightDir()

const SFVEC2F& ROUND_SEGMENT_2D::GetRightDir ( ) const
inline

Definition at line 61 of file round_segment_2d.h.

61 { return m_rightDir; }

References m_rightDir.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetRightEnd()

const SFVEC2F& ROUND_SEGMENT_2D::GetRightEnd ( ) const
inline

Definition at line 59 of file round_segment_2d.h.

59 { return m_rightEnd; }

References m_rightEnd.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetRightEnd_minus_Start()

const SFVEC2F& ROUND_SEGMENT_2D::GetRightEnd_minus_Start ( ) const
inline

Definition at line 60 of file round_segment_2d.h.

60 { return m_rightEndMinusStart; }
SFVEC2F m_rightEndMinusStart

References m_rightEndMinusStart.

◆ GetRightStar()

const SFVEC2F& ROUND_SEGMENT_2D::GetRightStar ( ) const
inline

Definition at line 58 of file round_segment_2d.h.

58 { return m_rightStart; }

References m_rightStart.

Referenced by RENDER_3D_LEGACY::addObjectTriangles().

◆ GetStart()

const SFVEC2F& ROUND_SEGMENT_2D::GetStart ( ) const
inline

Definition at line 49 of file round_segment_2d.h.

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

References m_segment, and RAYSEG2D::m_Start.

Referenced by RENDER_3D_LEGACY::addObjectTriangles(), and DrawSegment().

◆ GetWidth()

float ROUND_SEGMENT_2D::GetWidth ( ) const
inline

Definition at line 46 of file round_segment_2d.h.

46 { return m_width; }

References m_width.

Referenced by DrawSegment().

◆ Intersect()

bool ROUND_SEGMENT_2D::Intersect ( const RAYSEG2D aSegRay,
float *  aOutT,
SFVEC2F aNormalOut 
) const
overridevirtual
Parameters
aOutTa value between 0.0 and 1.0 in relation to the time of the hit of the segment.

Implements OBJECT_2D.

Definition at line 127 of file round_segment_2d.cpp.

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

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 ROUND_SEGMENT_2D::Intersects ( const BBOX_2D aBBox) const
overridevirtual

a.Intersects(b) ⇔ !a.Disjoint(b) ⇔ !(a ∩ b = ∅)

Implements OBJECT_2D.

Definition at line 68 of file round_segment_2d.cpp.

69 {
70  if( !m_bbox.Intersects( aBBox ) )
71  return false;
72 
73  if( ( aBBox.Max().x > m_bbox.Max().x ) && ( aBBox.Max().y > m_bbox.Max().y )
74  && ( aBBox.Min().x < m_bbox.Min().x ) && ( aBBox.Min().y < m_bbox.Min().y ) )
75  return true;
76 
77  SFVEC2F v[4];
78 
79  v[0] = aBBox.Min();
80  v[1] = SFVEC2F( aBBox.Min().x, aBBox.Max().y );
81  v[2] = aBBox.Max();
82  v[3] = SFVEC2F( aBBox.Max().x, aBBox.Min().y );
83 
84  // Test against the main rectangle segment
85  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[0], v[1] - v[0] ) )
86  return true;
87 
88  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[1], v[2] - v[1] ) )
89  return true;
90 
91  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[2], v[3] - v[2] ) )
92  return true;
93 
94  if( IntersectSegment( m_leftStart, m_leftEndMinusStart, v[3], v[0] - v[3] ) )
95  return true;
96 
97  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[0], v[1] - v[0] ) )
98  return true;
99 
100  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[1], v[2] - v[1] ) )
101  return true;
102 
103  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[2], v[3] - v[2] ) )
104  return true;
105 
106  if( IntersectSegment( m_rightStart, m_rightEndMinusStart, v[3], v[0] - v[3] ) )
107  return true;
108 
109  // Test the two circles
111  return true;
112 
114  return true;
115 
116  return false;
117 }
BBOX_2D m_bbox
Definition: object_2d.h:110
SFVEC2F m_rightEndMinusStart
const SFVEC2F & Max() const
Definition: bbox_2d.h:172
glm::vec2 SFVEC2F
Definition: xv3d_types.h:42
SFVEC2F m_End
Definition: ray.h:113
SFVEC2F m_leftEndMinusStart
bool IntersectSegment(const SFVEC2F &aStartA, const SFVEC2F &aEnd_minus_startA, const SFVEC2F &aStartB, const SFVEC2F &aEnd_minus_startB)
Definition: ray.cpp:187
SFVEC2F m_Start
Definition: ray.h:112
const SFVEC2F & Min() const
Definition: bbox_2d.h:167
bool Intersects(const BBOX_2D &aBBox) const
Test if a bounding box intersects this box.
Definition: bbox_2d.cpp:211

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

◆ IsBBoxInside()

INTERSECTION_RESULT ROUND_SEGMENT_2D::IsBBoxInside ( const BBOX_2D aBBox) const
overridevirtual

Test this object if it's completely outside, intersects, or is completely inside aBBox.

Returns
INTERSECTION_RESULT

Implements OBJECT_2D.

Definition at line 296 of file round_segment_2d.cpp.

297 {
298  if( !m_bbox.Intersects( aBBox ) )
300 
301  SFVEC2F v[4];
302 
303  v[0] = aBBox.Min();
304  v[1] = aBBox.Max();
305  v[2] = SFVEC2F( aBBox.Min().x, aBBox.Max().y );
306  v[3] = SFVEC2F( aBBox.Max().x, aBBox.Min().y );
307 
308  bool isInside[4];
309 
310  isInside[0] = IsPointInside( v[0] );
311  isInside[1] = IsPointInside( v[1] );
312  isInside[2] = IsPointInside( v[2] );
313  isInside[3] = IsPointInside( v[3] );
314 
315  // Check if all points are inside the circle
316  if( isInside[0] && isInside[1] && isInside[2] && isInside[3] )
318 
319  // Check if any point is inside the circle
320  if( isInside[0] || isInside[1] || isInside[2] || isInside[3] )
322 
324 }
BBOX_2D m_bbox
Definition: object_2d.h:110
bool IsPointInside(const SFVEC2F &aPoint) const override
const SFVEC2F & Max() const
Definition: bbox_2d.h:172
glm::vec2 SFVEC2F
Definition: xv3d_types.h:42
const SFVEC2F & Min() const
Definition: bbox_2d.h:167
bool Intersects(const BBOX_2D &aBBox) const
Test if a bounding box intersects this box.
Definition: bbox_2d.cpp:211

References FULL_INSIDE, INTERSECTS, BBOX_2D::Intersects(), IsPointInside(), OBJECT_2D::m_bbox, BBOX_2D::Max(), BBOX_2D::Min(), and MISSES.

◆ IsPointInside()

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

Implements OBJECT_2D.

Definition at line 327 of file round_segment_2d.cpp.

328 {
329  float dSquared = m_segment.DistanceToPointSquared( aPoint );
330 
331  if( dSquared <= m_radius_squared )
332  return true;
333 
334  return false;
335 }
float DistanceToPointSquared(const SFVEC2F &aPoint) const
Definition: ray.cpp:300

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

Referenced by Intersect(), and IsBBoxInside().

◆ Overlaps()

bool ROUND_SEGMENT_2D::Overlaps ( const BBOX_2D aBBox) const
overridevirtual

Test if the box overlaps the object.

Conformance Implements the Overlaps function from the OGC Simple Feature Specification at 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 dimensions 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
aBBoxis the bounding box to test.
Returns
true if the BBox intersects the object or is inside it.

Implements OBJECT_2D.

Definition at line 120 of file round_segment_2d.cpp.

121 {
122  // NOT IMPLEMENTED
123  return false;
124 }

Friends And Related Function Documentation

◆ ROUND_SEGMENT

friend class ROUND_SEGMENT
friend

Definition at line 70 of file round_segment_2d.h.

Member Data Documentation

◆ m_bbox

◆ m_boardItem

const BOARD_ITEM& OBJECT_2D::m_boardItem
protectedinherited

Definition at line 114 of file object_2d.h.

Referenced by OBJECT_2D::GetBoardItem().

◆ m_centroid

◆ m_leftDir

SFVEC2F ROUND_SEGMENT_2D::m_leftDir
private

Definition at line 77 of file round_segment_2d.h.

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

◆ m_leftEnd

SFVEC2F ROUND_SEGMENT_2D::m_leftEnd
private

Definition at line 75 of file round_segment_2d.h.

Referenced by GetLeftEnd(), and ROUND_SEGMENT_2D().

◆ m_leftEndMinusStart

SFVEC2F ROUND_SEGMENT_2D::m_leftEndMinusStart
private

Definition at line 76 of file round_segment_2d.h.

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

◆ m_leftStart

SFVEC2F ROUND_SEGMENT_2D::m_leftStart
private

Definition at line 74 of file round_segment_2d.h.

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

◆ m_obj_type

OBJECT_2D_TYPE OBJECT_2D::m_obj_type
protectedinherited

Definition at line 112 of file object_2d.h.

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

◆ m_radius

float ROUND_SEGMENT_2D::m_radius
private

Definition at line 84 of file round_segment_2d.h.

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

◆ m_radius_squared

float ROUND_SEGMENT_2D::m_radius_squared
private

Definition at line 85 of file round_segment_2d.h.

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

◆ m_rightDir

SFVEC2F ROUND_SEGMENT_2D::m_rightDir
private

Definition at line 82 of file round_segment_2d.h.

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

◆ m_rightEnd

SFVEC2F ROUND_SEGMENT_2D::m_rightEnd
private

Definition at line 80 of file round_segment_2d.h.

Referenced by GetRightEnd(), and ROUND_SEGMENT_2D().

◆ m_rightEndMinusStart

SFVEC2F ROUND_SEGMENT_2D::m_rightEndMinusStart
private

◆ m_rightStart

SFVEC2F ROUND_SEGMENT_2D::m_rightStart
private

Definition at line 79 of file round_segment_2d.h.

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

◆ m_segment

RAYSEG2D ROUND_SEGMENT_2D::m_segment
private

◆ m_width

float ROUND_SEGMENT_2D::m_width
private

Definition at line 86 of file round_segment_2d.h.

Referenced by GetWidth(), and ROUND_SEGMENT_2D().


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