Base: add methods to transform a Vector3f with a Rotation or Placement
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user