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 );
55 return M.Inverse(arg-p);
60 return M.Inverse(arg-p);
73bool Equal(
const FrameVel& r1,
const FrameVel& r2,
double eps) {
83Frame FrameVel::GetFrame()
const {
87Twist FrameVel::GetTwist()
const {
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 );
130 return RotationVel(Rotation::Identity(),Vector::Zero());
140 R.Inverse(arg.
v-
w*arg.
p)
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);
310 return VectorVel(Vector::Zero(),Vector::Zero());
312void VectorVel::ReverseSign() {
321bool Equal(
const VectorVel& r1,
const VectorVel& r2,
double eps) {
324bool Equal(
const Vector& r1,
const VectorVel& r2,
double eps) {
327bool Equal(
const VectorVel& r1,
const Vector& 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) {
378 return TwistVel(VectorVel::Zero(),VectorVel::Zero());
382void TwistVel::ReverseSign()
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);
530Twist TwistVel::GetTwistDot()
const {
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
represents a frame transformation in 3D space (rotation + translation)
Rotation M
Orientation of the Frame.
Vector p
origine of the Frame
represents rotations in 3 dimensional space.
represents both translational and rotational velocities.
Vector rot
The rotational velocity of that point.
Vector vel
The velocity of that point.
A concrete implementation of a 3 dimensional vector class.
local_group_size(16, 16) .push_constant(Type b
local_group_size(16, 16) .push_constant(Type rhs
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)