gwnavruntime/pathfollower/positiononcirclearcspline.h Source File

positiononcirclearcspline.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 // primary contact: LAPA - secondary contact: NOBODY
8 #ifndef Navigation_PositionOnCircleArcSpline_H
9 #define Navigation_PositionOnCircleArcSpline_H
10 
13 
14 namespace Kaim
15 {
16 
17 class CircleArcSpline;
18 class CircleArcSplineSection;
19 
20 
23 {
24 public:
25  PositionOnCircleArcSplineSection() { Invalidate(); }
26  PositionOnCircleArcSplineSection(const CircleArcSplineSection* circleArcSplineSection) { Reset(circleArcSplineSection); }
27 
28  void Invalidate();
29  void Reset(const CircleArcSplineSection* circleArcSplineSection);
30  void ResetAtSectionEnd(const CircleArcSplineSection* circleArcSplineSection);
31 
32  bool IsValid() const;
33 
34  const CircleArcSplineSection* GetSection() const { return m_circleArcSplineSection; }
35  const Vec3f& GetPosition() const { return m_position; }
36  const Vec2f& GetTangent() const { return m_tangent; }
37  KyFloat32 GetDistanceFromStart() const { return m_distFromStart; }
38  KyFloat32 GetDistanceToEnd() const { return (m_circleArcSplineSection ? (m_circleArcSplineSection->GetLength2d() - m_distFromStart) : 0.0f); }
39  KyFloat32 GetTurningRadius() const { return (m_circleArcSplineSection ? m_circleArcSplineSection->GetRadius() : 0.0f); }
40 
46 
52 
53 public:
54  const CircleArcSplineSection* m_circleArcSplineSection;
55  Vec3f m_position;
56  Vec2f m_tangent;
57  KyFloat32 m_distFromStart;
58 };
59 
60 
63 {
64 public:
65  PositionOnCircleArcSpline() { Invalidate(); }
66  PositionOnCircleArcSpline(const CircleArcSpline* circleArcSpline) { Reset(circleArcSpline); }
67 
68  void Invalidate();
69  void Reset(const CircleArcSpline* circleArcSpline);
70 
71  bool IsValid() const;
72 
73  const CircleArcSplineSection* GetSection() const { return m_positionOnCircleArcSplineSection.GetSection(); }
74  const Vec3f& GetPosition() const { return m_positionOnCircleArcSplineSection.GetPosition(); }
75  const Vec2f& GetTangent() const { return m_positionOnCircleArcSplineSection.GetTangent(); }
76  KyFloat32 GetDistanceFromSectionStart() const { return m_positionOnCircleArcSplineSection.GetDistanceFromStart(); }
77  KyFloat32 GetDistanceToSectionEnd() const { return m_positionOnCircleArcSplineSection.GetDistanceToEnd(); }
78  KyFloat32 GetTurningRadius() const { return m_positionOnCircleArcSplineSection.GetTurningRadius(); }
79 
80  KyFloat32 GetDistanceFromSplineStart() const;
81  KyFloat32 GetDistanceToSplineEnd() const;
82 
83  void MoveForward(KyFloat32 distance);
84  void MoveBackward(KyFloat32 distance);
85 
90 
94 
98 
100  bool IsStrictlyBefore(const PositionOnCircleArcSpline& other) const;
101 
105  KyResult GetDistanceTo(const PositionOnCircleArcSpline& other, KyFloat32& distanceToOther) const;
106 
107 public:
108  PositionOnCircleArcSplineSection m_positionOnCircleArcSplineSection;
109  const CircleArcSpline* m_circleArcSpline;
110  KyUInt32 m_splineSectionIndex;
111 };
112 
113 }
114 
115 #endif // Navigation_PositionOnCircleArcSpline_H
KyFloat32 MoveForward(KyFloat32 distance)
Moves the position forward for the provided distance (in meter), taken along the circle if the Circle...
KyResult MoveToNextTurnSectionStart()
Moves this PositionOnCircleArcSpline to the next upcoming curve CircleArcSplineSection start position...
KyResult MoveToNextStraigthLineSectionStart()
Moves this PositionOnCircleArcSpline to the next upcoming straight CircleArcSplineSection start posit...
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
KyFloat32 MoveBackward(KyFloat32 distance)
Moves the position backward for the provided distance (in meter), taken along the circle if the Circl...
Maintains a position moving along a given CricleArcSpline.
Definition: positiononcirclearcspline.h:64
Maintains a position moving along a given CricleArc.
Definition: positiononcirclearcspline.h:22
KyResult GetDistanceTo(const PositionOnCircleArcSpline &other, KyFloat32 &distanceToOther) const
Computes the distance along spline from this position to other one.
The class representing a spline compounded of oriented circle arcs and straight line segments...
Definition: circlearcspline.h:29
This class defines a two-dimensional vector whose coordinates are stored using floating-point numbers...
Definition: vec2f.h:24
KyResult MoveToNextSectionStart()
Moves this PositionOnCircleArcSpline to the next CircleArcSplineSection start position.
bool IsStrictlyBefore(const PositionOnCircleArcSpline &other) const
Compares the relative position with another PositionOnCircleArcSpline.
Definition: gamekitcrowddispersion.h:20
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
Class representing either an oriented circle arc or a straight line segment, to be aggregated into a ...
Definition: circlearcsplinesection.h:25
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23