17 class CircleArcSplineSectionBlob;
18 class CircleArcSplineSectionDisplayConfig;
25 static const KyFloat32 SmallLengthThreshold;
43 void InitFromBlob(
const CircleArcSplineSectionBlob* blob);
47 const Bubble& GetBubble()
const {
return m_bubble; }
48 const Vec3f& GetStartPosition()
const {
return m_startPosition; }
49 const Vec3f& GetEndPosition()
const {
return m_endPosition; }
50 KyUInt32 GetStartSectionIdx()
const {
return m_startSectionIdx; }
51 KyUInt32 GetEndSectionIdx()
const {
return m_endSectionIdx; }
52 KyFloat32 GetLength2d()
const {
return m_length2d; }
53 const Vec2f& GetStartTangent()
const {
return m_startTangent; }
54 const Vec2f& GetEndTangent()
const {
return m_endTangent; }
56 const Vec3f& GetCenter()
const {
return m_bubble.GetCenter(); }
57 KyFloat32 GetRadius()
const {
return m_bubble.GetRadius(); }
58 RotationDirection GetRotationDirection()
const {
return m_bubble.GetRotationDirection(); }
60 bool IsInitialized()
const {
return (m_length2d > 0.0f); }
63 bool IsSmall()
const {
return (m_length2d < SmallLengthThreshold); }
80 void MoveTo(Vec3f& position,
KyFloat32 distanceFromStart, Vec2f* tangent =
nullptr)
const;
91 KyFloat32 ComputeAngleFromStart(
const Vec3f& position)
const;
98 KyFloat32 ComputeDistance2dFromStart(
const Vec3f& position)
const;
103 KyFloat32 ComputeDistance2dToEnd(
const Vec3f& position)
const;
105 void Display(
const CircleArcSplineSectionDisplayConfig& displayConfig, DisplayList& displayList_arc, DisplayList& displayList_extremities,
106 DisplayList& displayList_sectionIdx, DisplayList& displayList_radius)
const;
109 void ComputeStartTangent();
110 void ComputeEndTangent();
111 void ComputeProperties();
118 Vec3f m_startPosition;
121 Vec2f m_startTangent;
133 , m_startPosition(startPosition)
134 , m_endPosition(endPosition)
135 , m_startTangent(startTangent)
136 , m_endTangent(endTangent)
137 , m_startSectionIdx(startSectionIdx)
138 , m_endSectionIdx(endSectionIdx)
141 ComputeStartTangent();
150 : m_bubble(startPosition,
KyFloat32MAXVAL, UndefinedRotationDirection, UndefinedBubbleType)
151 , m_startPosition(startPosition)
152 , m_endPosition(endPosition)
153 , m_startTangent(dir2d)
154 , m_endTangent(dir2d)
155 , m_startSectionIdx(startSectionIdx)
156 , m_endSectionIdx(endSectionIdx)
160 ComputeStartTangent();
161 m_endTangent = m_startTangent;
#define KyFloat32MAXVAL
KyFloat32 max value
Definition: types.h:71
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
RotationDirection
Defines the 4 possible cases of possibly constrained rotation in the horizontal plane for a given ele...
Definition: rotation.h:15
void SetEndPosition(const Vec3f &endPosition, KyUInt32 endSectionIdx, const Vec2f &endTangent)
Sets end position related information.
Definition: circlearcsplinesection.cpp:121
This class represents a circle with potential rotation limitation.
Definition: bubble.h:31
2d vector using KyFloat32.
Definition: vec2f.h:18
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Vec2f ComputeTangent(const Vec3f &position) const
Computes the tangent direction at the given position.
Definition: circlearcsplinesection.cpp:135
void MoveTo(Vec3f &position, KyFloat32 distanceFromStart, Vec2f *tangent=nullptr) const
Moves the provided position to the one on CircleArcSplineSection at the given distance from start pos...
Definition: circlearcsplinesection.cpp:158
static Vec2f Zero()
Returns {0.0f, 0.0f}.
Definition: vec2f.h:93
void SetStartPosition(const Vec3f &startPosition, KyUInt32 startSectionIdx, const Vec2f &startTangent)
Sets start position related information.
Definition: circlearcsplinesection.cpp:107
Class representing either an oriented circle arc or a straight line segment, to be aggregated into a ...
Definition: circlearcsplinesection.h:23
CircleArcSplineSection()
Creates an uninitialized CircleArcSplineSection.
Definition: circlearcsplinesection.h:29
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16