Base: add methods to transform a Vector3f with a Rotation or Placement

This commit is contained in:
wmayer
2022-08-04 11:45:39 +02:00
parent d542185ba2
commit 4d00faeceb
4 changed files with 23 additions and 0 deletions

View File

@@ -160,6 +160,12 @@ void Placement::multVec(const Vector3d & src, Vector3d & dst) const
dst += this->_pos;
}
void Placement::multVec(const Vector3f & src, Vector3f & dst) const
{
this->_rot.multVec(src, dst);
dst += Base::toVector<float>(this->_pos);
}
Placement Placement::slerp(const Placement & p0, const Placement & p1, double t)
{
Rotation rot = Rotation::slerp(p0.getRotation(), p1.getRotation(), t);

View File

@@ -76,6 +76,7 @@ public:
Placement pow(double t, bool shorten = true) const;
void multVec(const Vector3d & src, Vector3d & dst) const;
void multVec(const Vector3f & src, Vector3f & dst) const;
//@}
static Placement slerp(const Placement & p0, const Placement & p1, double t);

View File

@@ -445,6 +445,20 @@ void Rotation::multVec(const Vector3d & src, Vector3d & dst) const
dst.z = dz;
}
void Rotation::multVec(const Vector3f & src, Vector3f & dst) const
{
Base::Vector3d srcd = Base::toVector<double>(src);
multVec(srcd, srcd);
dst = Base::toVector<float>(srcd);
}
Vector3f Rotation::multVec(const Vector3f & src) const
{
Vector3f dst;
multVec(src,dst);
return dst;
}
void Rotation::scaleAngle(const double scaleFactor)
{
Vector3d axis;

View File

@@ -135,6 +135,8 @@ public:
void multVec(const Vector3d & src, Vector3d & dst) const;
Vector3d multVec(const Vector3d & src) const;
void multVec(const Vector3f & src, Vector3f & dst) const;
Vector3f multVec(const Vector3f & src) const;
void scaleAngle(const double scaleFactor);
bool isSame(const Rotation&) const;
bool isSame(const Rotation&, double tol) const;