20FrameVel& FrameVel::operator = (
const FrameVel& arg) {
26FrameVel FrameVel::Identity() {
27 return FrameVel(RotationVel::Identity(),VectorVel::Zero());
33 return FrameVel(lhs.M*
rhs.M,lhs.M*
rhs.p+lhs.p);
37 return FrameVel(lhs.M*
rhs.M,lhs.M*
rhs.p+lhs.p);
41 return FrameVel(lhs.M*
rhs.M , lhs.M*
rhs.p+lhs.p );
44VectorVel FrameVel::operator *(
const VectorVel & arg)
const
48VectorVel FrameVel::operator *(
const Vector & arg)
const
53VectorVel FrameVel::Inverse(
const VectorVel& arg)
const
55 return M.Inverse(arg-p);
58VectorVel FrameVel::Inverse(
const Vector& arg)
const
60 return M.Inverse(arg-p);
63FrameVel FrameVel::Inverse()
const
65 return FrameVel(
M.Inverse(),-
M.Inverse(p));
68FrameVel& FrameVel::operator = (
const Frame& arg) {
73bool Equal(
const FrameVel& r1,
const FrameVel& r2,
double eps) {
83Frame FrameVel::GetFrame()
const {
87Twist FrameVel::GetTwist()
const {
88 return Twist(p.v,
M.w);
92RotationVel
operator* (
const RotationVel& r1,
const RotationVel& r2) {
93 return RotationVel( r1.R*r2.R, r1.w + r1.R*r2.w );
96RotationVel
operator* (
const Rotation& r1,
const RotationVel& r2) {
97 return RotationVel( r1*r2.R, r1*r2.w );
100RotationVel
operator* (
const RotationVel& r1,
const Rotation& r2) {
101 return RotationVel( r1.R*r2, r1.w );
104RotationVel& RotationVel::operator = (
const RotationVel& arg) {
109RotationVel& RotationVel::operator = (
const Rotation& arg) {
115VectorVel RotationVel::UnitX()
const {
116 return VectorVel(
R.UnitX(),
w*
R.UnitX());
119VectorVel RotationVel::UnitY()
const {
120 return VectorVel(
R.UnitY(),
w*
R.UnitY());
123VectorVel RotationVel::UnitZ()
const {
124 return VectorVel(
R.UnitZ(),
w*
R.UnitZ());
129RotationVel RotationVel::Identity() {
130 return RotationVel(Rotation::Identity(),Vector::Zero());
133RotationVel RotationVel::Inverse()
const {
134 return RotationVel(
R.Inverse(),-
R.Inverse(
w));
137VectorVel RotationVel::Inverse(
const VectorVel& arg)
const {
139 return VectorVel(tmp,
140 R.Inverse(arg.v-
w*arg.p)
144VectorVel RotationVel::Inverse(
const Vector& arg)
const {
146 return VectorVel(tmp,
152VectorVel RotationVel::operator*(
const VectorVel& arg)
const {
154 return VectorVel(tmp,
w*tmp+
R*arg.v);
157VectorVel RotationVel::operator*(
const Vector& arg)
const {
159 return VectorVel(tmp,
w*tmp);
167void RotationVel::DoRotX(
const doubleVel&
angle) {
171RotationVel RotationVel::RotX(
const doubleVel&
angle) {
175void RotationVel::DoRotY(
const doubleVel&
angle) {
179RotationVel RotationVel::RotY(
const doubleVel&
angle) {
183void RotationVel::DoRotZ(
const doubleVel&
angle) {
187RotationVel RotationVel::RotZ(
const doubleVel&
angle) {
192RotationVel RotationVel::Rot(
const Vector& rotvec,
const doubleVel&
angle)
198 return RotationVel(Rotation::Rot2(
v,
angle.t),
v*
angle.grad);
201RotationVel RotationVel::Rot2(
const Vector& rotvec,
const doubleVel&
angle)
204 return RotationVel(Rotation::Rot2(rotvec,
angle.t),rotvec*
angle.grad);
208VectorVel
operator + (
const VectorVel& r1,
const VectorVel& r2) {
209 return VectorVel(r1.p+r2.p,r1.v+r2.v);
212VectorVel
operator - (
const VectorVel& r1,
const VectorVel& r2) {
213 return VectorVel(r1.p-r2.p,r1.v-r2.v);
217 return VectorVel(r1.p+r2,r1.v);
221 return VectorVel(r1.p-r2,r1.v);
225 return VectorVel(r1+r2.p,r2.v);
229 return VectorVel(r1-r2.p,-r2.v);
234 return VectorVel(-r.p,-r.v);
243VectorVel
operator * (
const VectorVel& r1,
const VectorVel& r2) {
244 return VectorVel(r1.p*r2.p, r1.p*r2.v+r1.v*r2.p);
248 return VectorVel(r1.p*r2, r1.v*r2);
252 return VectorVel(r1*r2.p, r1*r2.v);
259 return VectorVel(r1*r2.p, r1*r2.v);
263 return VectorVel(r1.p*r2, r1.v*r2);
268VectorVel
operator * (
const doubleVel& r1,
const VectorVel& r2) {
269 return VectorVel(r1.t*r2.p, r1.t*r2.v + r1.grad*r2.p);
272VectorVel
operator * (
const VectorVel& r2,
const doubleVel& r1) {
273 return VectorVel(r1.t*r2.p, r1.t*r2.v + r1.grad*r2.p);
277 return VectorVel(r1.p/r2, r1.v/r2);
280VectorVel
operator / (
const VectorVel& r2,
const doubleVel& r1) {
281 return VectorVel(r2.p/r1.t, r2.v/r1.t - r2.p*r1.grad/r1.t/r1.t);
285 return VectorVel(
R*
x.p,
R*
x.v);
288VectorVel& VectorVel::operator = (
const VectorVel& arg) {
293VectorVel& VectorVel::operator = (
const Vector& arg) {
298VectorVel& VectorVel::operator += (
const VectorVel& arg) {
303VectorVel& VectorVel::operator -= (
const VectorVel& arg) {
309VectorVel VectorVel::Zero() {
310 return VectorVel(Vector::Zero(),Vector::Zero());
312void VectorVel::ReverseSign() {
321bool Equal(
const VectorVel& r1,
const VectorVel& r2,
double eps) {
331bool Equal(
const RotationVel& r1,
const RotationVel& r2,
double eps) {
334bool Equal(
const Rotation& r1,
const RotationVel& r2,
double eps) {
337bool Equal(
const RotationVel& r1,
const Rotation& r2,
double eps) {
340bool Equal(
const TwistVel& a,
const TwistVel&
b,
double eps) {
344bool Equal(
const Twist& a,
const TwistVel&
b,
double eps) {
348bool Equal(
const TwistVel& a,
const Twist&
b,
double eps) {
376TwistVel TwistVel::Zero()
378 return TwistVel(VectorVel::Zero(),VectorVel::Zero());
382void TwistVel::ReverseSign()
388TwistVel TwistVel::RefPoint(
const VectorVel& v_base_AB)
395 return TwistVel(this->vel+this->
rot*v_base_AB,this->
rot);
398TwistVel& TwistVel::operator-=(
const TwistVel& arg)
405TwistVel& TwistVel::operator+=(
const TwistVel& arg)
415 return TwistVel(lhs.vel*
rhs,lhs.rot*
rhs);
420 return TwistVel(lhs*
rhs.vel,lhs*
rhs.rot);
425 return TwistVel(lhs.vel/
rhs,lhs.rot/
rhs);
431 return TwistVel(lhs.vel*
rhs,lhs.rot*
rhs);
436 return TwistVel(lhs*
rhs.vel,lhs*
rhs.rot);
441 return TwistVel(lhs.vel/
rhs,lhs.rot/
rhs);
449 return TwistVel(lhs.vel+
rhs.vel,lhs.rot+
rhs.rot);
454 return TwistVel(lhs.vel-
rhs.vel,lhs.rot-
rhs.rot);
460 return TwistVel(-arg.vel,-arg.rot);
473TwistVel RotationVel::Inverse(
const TwistVel& arg)
const
475 return TwistVel(Inverse(arg.vel),Inverse(arg.rot));
478TwistVel RotationVel::operator * (
const TwistVel& arg)
const
480 return TwistVel((*
this)*arg.vel,(*
this)*arg.rot);
483TwistVel RotationVel::Inverse(
const Twist& arg)
const
485 return TwistVel(Inverse(arg.vel),Inverse(arg.rot));
488TwistVel RotationVel::operator * (
const Twist& arg)
const
490 return TwistVel((*
this)*arg.vel,(*
this)*arg.rot);
494TwistVel FrameVel::operator * (
const TwistVel& arg)
const
498 tmp.vel =
M*arg.vel+p*tmp.rot;
502TwistVel FrameVel::operator * (
const Twist& arg)
const
506 tmp.vel =
M*arg.vel+p*tmp.rot;
510TwistVel FrameVel::Inverse(
const TwistVel& arg)
const
513 tmp.rot =
M.Inverse(arg.rot);
514 tmp.vel =
M.Inverse(arg.vel-p*arg.rot);
518TwistVel FrameVel::Inverse(
const Twist& arg)
const
521 tmp.rot =
M.Inverse(arg.rot);
522 tmp.vel =
M.Inverse(arg.vel-p*arg.rot);
526Twist TwistVel::GetTwist()
const {
527 return Twist(vel.p,
rot.p);
530Twist TwistVel::GetTwistDot()
const {
531 return Twist(vel.v,
rot.v);
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
bool Equal(const VectorAcc &r1, const VectorAcc &r2, double eps)
void SetToZero(VectorVel &v)
FrameVel operator*(const FrameVel &lhs, const FrameVel &rhs)
VectorVel operator/(const VectorVel &r1, double r2)
VectorVel operator-(const VectorVel &r1, const VectorVel &r2)
IMETHOD doubleVel dot(const VectorVel &lhs, const VectorVel &rhs)
VectorVel operator+(const VectorVel &r1, const VectorVel &r2)
bool Equal(const FrameVel &r1, const FrameVel &r2, double eps)
Rall1d< double > doubleVel