Go to the documentation of this file.
20 #ifndef __OpenKarto_Geometry_h__
21 #define __OpenKarto_Geometry_h__
194 inline Size3(T width, T height, T depth)
435 return (*
this - rOther).SquaredLength();
1055 template<
typename T>
1341 m_Values[0] = rVector.
GetX();
1342 m_Values[1] = rVector.
GetY();
1343 m_Values[2] = rVector.
GetZ();
1344 m_Values[3] = rVector.
GetW();
1437 return Vector4d(m_Values[0], m_Values[1], m_Values[2], m_Values[3]);
1476 return sqrt(Norm());
1485 return m_Values[0]*m_Values[0] + m_Values[1]*m_Values[1] + m_Values[2]*m_Values[2] + m_Values[3]*m_Values[3];
1498 m_Values[0] *= inversedLength;
1499 m_Values[1] *= inversedLength;
1500 m_Values[2] *= inversedLength;
1501 m_Values[3] *= inversedLength;
1509 const String ToString()
const;
1564 uv = qvec ^ rVector;
1567 uv *= ( 2.0 * m_Values[3] );
1570 return rVector + uv + uuv;
1624 m_Minimum = rMinimum;
1642 m_Maximum = rMaximum;
1651 Vector2d size = m_Maximum - m_Minimum;
1662 m_Minimum.MakeFloor(rPoint);
1663 m_Maximum.MakeCeil(rPoint);
1763 m_Minimum = rMinimum;
1781 m_Maximum = rMaximum;
1797 template<
typename T>
1895 return m_Size.GetWidth();
1913 return m_Size.GetHeight();
1922 m_Size.SetHeight(rHeight);
2097 if (
m_Size.GetWidth() < 0)
2106 if (rOther.
m_Size.GetWidth() < 0)
2107 l2 += rOther.
m_Size.GetWidth();
2109 r2 += rOther.
m_Size.GetWidth();
2113 if (l2 < l1 || r2 > r1)
2118 if (
m_Size.GetHeight() < 0)
2119 t1 +=
m_Size.GetHeight();
2121 b1 +=
m_Size.GetHeight();
2127 if (rOther.
m_Size.GetHeight() < 0)
2128 t2 += rOther.
m_Size.GetHeight();
2130 b2 += rOther.
m_Size.GetHeight();
2134 if (t2 < t1 || b2 > b1)
2222 return m_Position.GetX();
2240 return m_Position.GetY();
2267 m_Position = rPosition;
2285 m_Heading = heading;
2295 return m_Position.SquaredDistance(rOther.
m_Position);
2609 kt_double oneMinusCos = 1.0 - cosRadians;
2623 m_Matrix[0][0] = xx * oneMinusCos + cosRadians;
2628 m_Matrix[1][1] = yy * oneMinusCos + cosRadians;
2633 m_Matrix[2][2] = zz * oneMinusCos + cosRadians;
2663 if (haveInverse ==
false)
2678 for (
int row = 0; row < 3; row++)
2680 for (
int col = 0; col < 3; col++)
2729 for (
size_t row = 0; row < 3; row++)
2731 for (
size_t col = 0; col < 3; col++)
2821 if (fabs(fDet) <= fTolerance)
2827 for (
size_t row = 0; row < 3; row++)
2829 for (
size_t col = 0; col < 3; col++)
2831 rkInverse.
m_Matrix[row][col] *= fInvDet;
3122 kt_double y = sin(deltaLong) * cos(lat2);
3123 kt_double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(deltaLong);
3168 const kt_double t2 = clat1 * slat2 - slat1 * clat2 * cdlon;
3169 const kt_double t3 = slat1 * slat2 + clat1 * clat2 * cdlon;
3170 const kt_double dist = atan2(sqrt(t1*t1 + t2*t2), t3);
3173 return dist * earthRadius;
3227 template<
typename T>
3233 template<
typename T>
3239 template<
typename T>
3245 template<
typename T>
3251 template<
typename T>
3262 stringValue = tempString.
SubString(0, index);
3269 tempString = rStringValue.
SubString(index + 1, rStringValue.
Size());
3272 stringValue = tempString.
SubString(0, index);
3279 tempString = rStringValue.
SubString(index + 1, rStringValue.
Size());
3282 stringValue = tempString.
SubString(index + 1, rStringValue.
Size());
3302 #endif // __OpenKarto_Geometry_h__
Vector3 & operator*=(const Vector3 &rOther)
void operator+=(const Vector2 &rOther)
void SetGreen(kt_double green)
kt_double SquaredDistance(const Pose2 &rOther) const
const kt_double KT_TOLERANCE
kt_bool operator!=(const Vector2 &rOther) const
kt_double GetLatitude() const
void SetMinimum(const Vector3d &rMinimum)
const String ToString() const
kt_bool operator!=(const Size2 &rOther) const
void SetRed(kt_double red)
const Vector2 operator-(const Vector2 &rOther) const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Size2 &rSize)
Quaternion(const Quaternion &rOther)
kt_bool operator==(const Size3 &rOther) const
kt_double Distance(const Vector2 &rOther) const
void SetRight(const T &rRight)
const Vector2d & GetMaximum() const
kt_double AngleTo(const Vector2d &rVector) const
kt_bool operator==(const Vector3 &rOther) const
void Append(const String &rString)
Rectangle2(const Rectangle2 &rOther)
const karto::String ToString() const
List< PointGps > PointGpsList
TFSIMD_FORCE_INLINE tfScalar angle(const Quaternion &q1, const Quaternion &q2)
void Add(const Vector2d &rPoint)
void SetMinimum(const Vector2d &rMinimum)
kt_bool operator==(const Matrix3 &rkMatrix)
Vector2< T > GetTopRight()
const String ToString() const
kt_bool InverseFast(Matrix3 &rkInverse, kt_double fTolerance=KT_TOLERANCE) const
Color(const Color &rOther)
const Vector2d & GetPosition() const
void FromEulerAngles(kt_double yaw, kt_double pitch, kt_double roll)
Size3(T width, T height, T depth)
kt_bool operator==(const Vector4 &rOther) const
kt_double DegreesToRadians(kt_double degrees)
void Add(const BoundingBox2 &rBoundingBox)
const Vector3d & GetMinimum() const
Color(kt_int8u red, kt_int8u green, kt_int8u blue, kt_int8u alpha=255)
void SetMaximum(const Vector2d &rMaximum)
const Vector3 operator-(const Vector3 &rOther) const
Pose3(const Pose2 &rPose)
Pose2 operator-(const Pose2 &rOther) const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Vector4 &rVector)
Vector4 & operator=(const Vector4 &rOther)
void MakeFloor(const Vector3 &rOther)
Vector4(T x, T y, T z, T w)
const Vector2 operator*(T scalar) const
kt_bool operator!=(const Size3 &rOther) const
void AddOffset(kt_double latitude, kt_double longitude)
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Matrix3 &rMatrix)
Matrix3 Transpose() const
kt_bool Intersects(const BoundingBox2 &rOther) const
Vector2< T > GetBottomLeft()
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Pose3 &rPose)
Vector4(const Vector4 &rOther)
kt_bool operator!=(const Pose2 &rOther) const
const Vector2 operator+(const Vector2 &rOther) const
Vector3 & operator+=(const T &rValue)
void MakeCeil(const Vector2 &rOther)
void SetBottom(const T &rBottom)
kt_double & operator()(kt_int32u row, kt_int32u column)
void SetOrientation(const Quaternion &rOrientation)
void FromAxisAngle(kt_double x, kt_double y, kt_double z, const kt_double radians)
Size3 & operator=(const Size3 &rOther)
kt_double operator()(kt_int32u row, kt_int32u column) const
Vector3 & operator*=(const T &rValue)
const Vector2< T > GetCenter() const
const String ToString() const
kt_double SquaredLength() const
const Vector2< T > & GetPosition() const
kt_double Distance(const PointGps &rOther)
Vector4< kt_int32u > Vector4iu
const String ToString() const
kt_bool operator!=(const Color &rOther) const
Vector3 & operator-=(const Vector3 &rOther)
static String ToString(const char *value)
const Vector3d & GetMaximum() const
void SetLeft(const T &rLeft)
kt_bool operator==(const Size2 &rOther) const
const kt_double GetAlpha() const
Pose3(const Vector3d &rPosition, const karto::Quaternion &rOrientation)
void SetWidth(const T &rWidth)
void operator+=(const Matrix3 &rkMatrix)
const kt_double GetRed() const
const Vector2 operator/(T scalar) const
kt_bool Contains(const Vector2d &rPoint) const
Vector2< T > GetTopLeft()
karto::Vector3d operator*(const karto::Vector3d &rVector) const
static kt_bool FromString(const String &rStringValue, Vector3< T > &rValue)
Vector3< kt_int32s > Vector3i
kt_double RadiansToDegrees(kt_double radians)
Matrix3 & operator=(const Matrix3 &rOther)
const Vector2 operator-(T scalar) const
kt_double GetBearing(const PointGps &rOther)
Pose3(const Pose3 &rOther)
String SubString(kt_size_t index) const
kt_double NormalizeAngle(kt_double angle)
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Quaternion &rQuaternion)
void SetMaximum(const Vector3d &rMaximum)
Size2(const Size2 &rOther)
kt_bool operator==(const Pose2 &rOther) const
kt_bool operator==(const Quaternion &rOther) const
const Vector4d GetAsVector4() const
const T GetHeight() const
const PointGps operator-(const PointGps &rOther) const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Color &rColor)
const kt_double GetBlue() const
void SetLatitude(kt_double latitude)
Vector3(const Vector2< T > &rVector)
const Quaternion operator*(const Quaternion &rOther) const
Size2< kt_double > GetSize() const
Pose2 operator*(const Pose2 &rPose2) const
void SetTop(const T &rTop)
kt_bool operator!=(const Rectangle2 &rOther) const
Vector3< kt_double > Vector3d
const Vector3 operator+(kt_double scalar) const
Vector3 & operator+=(const Vector3 &rOther)
const PointGps operator+(const PointGps &rOther) const
Vector4< kt_int32s > Vector4i
Vector3 & operator=(const Vector3 &rOther)
const Vector3 operator+(const Vector3 &rOther) const
kt_bool operator==(const Vector2 &rOther) const
void operator*=(T scalar)
kt_bool operator==(const Color &rOther) const
kt_bool operator!=(const Vector3 &rOther) const
kt_bool operator==(const Pose3 &rOther) const
const char * ToCString() const
Vector3 & operator/=(const Vector3 &rOther)
void operator-=(const Vector2 &rOther)
const Vector3 operator^(const Vector3 &rOther) const
void SetLongitude(kt_double longitude)
Vector3 & operator-=(const T &rValue)
Vector2< kt_int32s > Vector2i
Matrix3(const Matrix3 &rOther)
PointGps(const PointGps &rOther)
kt_bool operator!=(const Pose3 &rOther) const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Vector2 &rVector)
void SetHeight(const T &rHeight)
Size3(const Size3 &rOther)
kt_bool InRange(const T &value, const T &a, const T &b)
kt_bool Contains(const BoundingBox2 &rOther) const
const String ToString() const
Size2 & operator=(const Size2 &rOther)
Vector2< kt_double > Vector2d
Rectangle2(const Vector2< T > &rTopLeft, const Vector2< T > &rBottomRight)
const String ToString(kt_int32u precision=4) const
#define KARTO_FORCEINLINE
Rectangle2(T x, T y, T width, T height)
kt_bool DoubleEqual(kt_double a, kt_double b)
Quaternion & operator=(const Quaternion &rOther)
kt_bool Contains(const Rectangle2< T > &rOther)
const Quaternion & GetOrientation() const
void SetPosition(const Vector3d &rPosition)
void SetPosition(const Vector2d &rPosition)
const Vector2d & GetMinimum() const
void operator/=(T scalar)
kt_bool operator!=(const Vector4 &rOther) const
PointGps(kt_double latitude, kt_double longitude)
kt_bool operator<(const Vector2 &rOther) const
TFSIMD_FORCE_INLINE tfScalar length(const Quaternion &q)
Pose3(const Vector3d &rPosition)
void SetPosition(const Vector2< T > &rPosition)
const String ToString() const
Vector3(const Vector3 &rOther)
const kt_double GetGreen() const
void SetAlpha(kt_double alpha)
const String ToString() const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const PointGps &rPointGps)
void AddOffset(const PointGps &rOffset)
void SetHeading(kt_double heading)
kt_size_t FindFirstOf(const String &rValue) const
void SetPosition(const T &rX, const T &rY)
Vector2< kt_int32u > Vector2iu
Matrix3 operator*(const Matrix3 &rOther) const
Vector3< kt_int32u > Vector3iu
Vector2< T > GetAsVector2() const
const karto::String ToString() const
friend KARTO_FORCEINLINE std::ostream & operator<<(std::ostream &rStream, const Vector3 &rVector)
const Vector3 operator-(kt_double scalar) const
void MakeCeil(const Vector3 &rOther)
const Size2< T > & GetSize() const
void MakeFloor(const Vector2 &rOther)
Vector2< T > GetBottomRight()
kt_bool operator!=(const Quaternion &rOther) const
kt_double SquaredLength() const
Quaternion(kt_double x, kt_double y, kt_double z, kt_double w)
Pose2 operator+(const Pose2 &rOther) const
const Vector3d & GetPosition() const
Rectangle2 & operator=(const Rectangle2 &rOther)
kt_bool operator<(const Vector3 &rOther) const
Pose3 & operator=(const Pose3 &rOther)
void SetBlue(kt_double blue)
Quaternion(const Vector4d &rVector)
kt_bool operator<(const Vector4 &rOther) const
kt_double operator*(const Vector2 &rOther) const
Vector3 & operator/=(const T &rValue)
kt_double GetLongitude() const
kt_double SquaredDistance(const Vector2 &rOther) const
kt_double GetHeading() const
kt_bool operator==(const Rectangle2 &rOther) const
Color(kt_double red, kt_double green, kt_double blue, kt_double alpha=1.0)
void SetSize(const Size2< T > &rSize)
const String ToString() const
Vector4< kt_double > Vector4d
Rectangle2(const Vector2< T > &rPosition, const Size2< T > &rSize)
void operator+=(const Pose2 &rOther)
const Vector3 operator*(T scalar) const
nav2d_karto
Author(s): Sebastian Kasperski
autogenerated on Wed Mar 2 2022 00:37:22