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 :
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 m_centroid
Definition: object_2d.h:111
OBJECT_2D(OBJECT_2D_TYPE aObjType, const BOARD_ITEM &aBoardItem)
Definition: object_2d.cpp:31
SFVEC2F m_rightEndMinusStart
SFVEC2F m_leftEndMinusStart
SFVEC2F GetCenter() const
Definition: bbox_2d.cpp:119
bool IsInitialized() const
Check if this bounding box is already initialized.
Definition: bbox_2d.cpp:79
const SFVEC2F & Min() const
Definition: bbox_2d.h:167
void Reset()
Reset the bounding box to zero and uninitialize it.
Definition: bbox_2d.cpp:86
const SFVEC2F & Max() const
Definition: bbox_2d.h:172
void Set(const SFVEC2F &aPbMin, const SFVEC2F &aPbMax)
Set bounding box with new parameters.
Definition: bbox_2d.cpp:61
void ScaleNextUp()
Scale a bounding box to the next float representation making it larger.
Definition: bbox_2d.cpp:162
SFVEC2F m_Dir
Definition: ray.h:110
glm::vec2 SFVEC2F
Definition: xv3d_types.h:42

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; }

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:108

References RAYSEG2D::m_End, and m_segment.

Referenced by RENDER_3D_OPENGL::addObjectTriangles().

◆ GetEnd_minus_Start()

const SFVEC2F & ROUND_SEGMENT_2D::GetEnd_minus_Start ( ) const
inline

Definition at line 51 of file round_segment_2d.h.

SFVEC2F m_End_minus_start
Definition: ray.h:109

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_OPENGL::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_OPENGL::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; }

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_OPENGL::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:112

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_OPENGL::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_OPENGL::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_OPENGL::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_OPENGL::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; }

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_OPENGL::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:107

References m_segment, and RAYSEG2D::m_Start.

Referenced by RENDER_3D_OPENGL::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}
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:319
bool IntersectSegment(const SFVEC2F &aStart, const SFVEC2F &aEnd_minus_start, float *aOutT) const
Definition: ray.cpp:262

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}
bool IntersectSegment(const SFVEC2F &aStartA, const SFVEC2F &aEnd_minus_startA, const SFVEC2F &aStartB, const SFVEC2F &aEnd_minus_startB)
Definition: ray.cpp:181
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}

References FULL_INSIDE, BBOX_2D::Intersects(), 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:294

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: