gwnavruntime/pathfollower/circlearcsplineturn.h Source File
Go to the documentation of this file.
21 class CircleArcSplineComputer;
22 class CircleArcSplineTurn;
28 class CircleArcSplineBubbleData
31 CircleArcSplineBubbleData() { Reset(); }
33 BubbleType GetBubbleType()
const {
return m_bubbleType; }
35 #ifdef CircleArcSplineBubbleData_MaintainGateAndRadiusRange
36 KyUInt32 GetFirstGateIndex()
const {
return m_firstGateIndex; }
37 KyUInt32 GetLastGateIndex()
const {
return m_lastGateIndex; }
38 KyFloat32 GetMinRadius()
const {
return m_minRadius; }
39 KyFloat32 GetMaxRadius()
const {
return m_maxRadius; }
40 #endif // CircleArcSplineBubbleData_MaintainGateAndRadiusRange
42 const Vec3f& GetMidPoint()
const {
return m_midPoint; }
43 const Vec2f& GetMedianTurnAxis()
const {
return m_medianTurnAxis; }
44 const Vec3f& GetEntryPos()
const {
return m_entryPos; }
45 const Vec3f& GetExitPos()
const {
return m_exitPos; }
46 KyUInt32 GetEntrySectionIdx()
const {
return m_entrySectionIdx; }
47 KyUInt32 GetExitSectionIdx()
const {
return m_exitSectionIdx; }
48 const Vec2f& GetEntryDir()
const {
return m_entryDir; }
49 const Vec2f& GetExitDir()
const {
return m_exitDir; }
50 KyUInt32 GetRadiusIndexInProfile()
const {
return m_radiusIndexInProfile; }
51 bool HasRangeBeenDefined()
const {
return m_hasRangeBeenDefined; }
55 m_bubbleType = UndefinedBubbleType;
58 #ifdef CircleArcSplineBubbleData_MaintainGateAndRadiusRange
63 #endif // CircleArcSplineBubbleData_MaintainGateAndRadiusRange
65 m_hasRangeBeenDefined =
false;
71 friend class CircleArcSplineTurn;
75 #ifdef CircleArcSplineBubbleData_MaintainGateAndRadiusRange
84 #endif // CircleArcSplineBubbleData_MaintainGateAndRadiusRange
86 bool m_hasRangeBeenDefined;
87 Vec2f m_medianTurnAxis;
103 class CircleArcSplineTurn
106 CircleArcSplineTurn() : m_channel(nullptr) {}
107 CircleArcSplineTurn(
const Channel* channel) : m_channel(channel) {}
108 CircleArcSplineTurn(
const CircleArcSplineTurn& other) { *
this = other; }
110 void operator=(
const CircleArcSplineTurn& other)
112 m_channel = other.m_channel;
113 m_bubble = other.m_bubble;
114 m_bubbleData = other.m_bubbleData;
119 const Bubble& GetBubble()
const {
return m_bubble; }
120 const CircleArcSplineBubbleData& GetBubbleData()
const {
return m_bubbleData; }
122 void SetBubble(
const Bubble& bubble,
BubbleType bubbleType);
124 void SetRadiusIndexInProfile(
KyUInt32 radiusIndexInProfile) { m_bubbleData.m_radiusIndexInProfile = radiusIndexInProfile; }
125 void UpdateDataAsSinglePoint(
const Vec3f& position,
KyUInt32 sectionIdx);
126 void UpdateDataAsSinglePoint(
const Vec3f& position,
KyUInt32 sectionIdx,
const Vec2f& entryDir,
const Vec2f& exitDir);
127 void UpdateData(
const Vec3f& entryPos,
KyUInt32 entrySectionIdx,
const Vec3f& exitPos,
KyUInt32 exitSectionIdx);
128 void UpdateData(
const Vec3f& entryPos,
KyUInt32 entrySectionIdx,
const Vec3f& exitPos,
KyUInt32 exitSectionIdx,
const Vec2f& entryDir,
const Vec2f& exitDir);
130 #ifdef CircleArcSplineBubbleData_MaintainGateAndRadiusRange
133 #endif // CircleArcSplineBubbleData_MaintainGateAndRadiusRange
135 bool IsASmallTurn(
KyFloat32 fullTurnToleranceSin)
const;
138 void ComputeMedianTurnAxis();
139 #ifdef CircleArcSplineBubbleData_MaintainGateAndRadiusRange
140 void ComputeRadiusRange();
141 #endif // CircleArcSplineBubbleData_MaintainGateAndRadiusRange
144 friend class CircleArcSplineComputer;
145 const Channel* m_channel;
147 CircleArcSplineBubbleData m_bubbleData;
151 typedef SharedPoolList<CircleArcSplineTurn> TurnList;
#define KyFloat32MAXVAL
KyFloat32 max value
Definition: types.h:71
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
BubbleType
Defines the type of a bubble accordingly to the place it has in a BubbleArray, a BubbleList, etc.
Definition: bubble.h:22
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32