diff --git a/src/Base/Placement.cpp b/src/Base/Placement.cpp index f6aac0d6f9..9402f5847c 100644 --- a/src/Base/Placement.cpp +++ b/src/Base/Placement.cpp @@ -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(this->_pos); +} + Placement Placement::slerp(const Placement & p0, const Placement & p1, double t) { Rotation rot = Rotation::slerp(p0.getRotation(), p1.getRotation(), t); diff --git a/src/Base/Placement.h b/src/Base/Placement.h index 2f3093d7b7..f57d4b8d2b 100644 --- a/src/Base/Placement.h +++ b/src/Base/Placement.h @@ -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); diff --git a/src/Base/Rotation.cpp b/src/Base/Rotation.cpp index 0ab5cc69f8..aab3af90c5 100644 --- a/src/Base/Rotation.cpp +++ b/src/Base/Rotation.cpp @@ -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(src); + multVec(srcd, srcd); + dst = Base::toVector(srcd); +} + +Vector3f Rotation::multVec(const Vector3f & src) const +{ + Vector3f dst; + multVec(src,dst); + return dst; +} + void Rotation::scaleAngle(const double scaleFactor) { Vector3d axis; diff --git a/src/Base/Rotation.h b/src/Base/Rotation.h index bf08bbd481..64609439ee 100644 --- a/src/Base/Rotation.h +++ b/src/Base/Rotation.h @@ -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;