89 double tmp0 =
fabs(data[0]);
90 double tmp1 =
fabs(data[1]);
94 return tmp0*
sqrt(1+
sqr(tmp1/tmp0));
96 return tmp1*
sqrt(1+
sqr(tmp0/tmp1));
103 double v = this->
Norm();
146 double v = this->
Norm();
197 double ca1,cb1,cc1,sa1,sb1,sc1;
198 ca1 =
cos(yaw); sa1 =
sin(yaw);
199 cb1 =
cos(pitch);sb1 =
sin(pitch);
200 cc1 =
cos(roll);sc1 =
sin(roll);
201 return Rotation(ca1*cb1,ca1*sb1*sc1 - sa1*cc1,ca1*sb1*cc1 + sa1*sc1,
202 sa1*cb1,sa1*sb1*sc1 + ca1*cc1,sa1*sb1*cc1 - ca1*sc1,
203 -sb1,cb1*sc1,cb1*cc1);
221 double sa,ca,sb,cb,sg,cg;
222 sa =
sin(Alfa);ca =
cos(Alfa);
223 sb =
sin(Beta);cb =
cos(Beta);
224 sg =
sin(Gamma);cg =
cos(Gamma);
225 return Rotation( ca*cb*cg-sa*sg, -ca*cb*sg-sa*cg, ca*sb,
226 sa*cb*cg+ca*sg, -sa*cb*sg+ca*cg, sa*sb,
261 ct + vt*rotvec(0)*rotvec(0),
262 -rotvec(2)*st + vt*rotvec(0)*rotvec(1),
263 rotvec(1)*st + vt*rotvec(0)*rotvec(2),
264 rotvec(2)*st + vt*rotvec(1)*rotvec(0),
265 ct + vt*rotvec(1)*rotvec(1),
266 -rotvec(0)*st + vt*rotvec(1)*rotvec(2),
267 -rotvec(1)*st + vt*rotvec(2)*rotvec(0),
268 rotvec(0)*st + vt*rotvec(2)*rotvec(1),
269 ct + vt*rotvec(2)*rotvec(2)
283 ct + vt*rotvec(0)*rotvec(0),
284 -rotvec(2)*st + vt*rotvec(0)*rotvec(1),
285 rotvec(1)*st + vt*rotvec(0)*rotvec(2),
286 rotvec(2)*st + vt*rotvec(1)*rotvec(0),
287 ct + vt*rotvec(1)*rotvec(1),
288 -rotvec(0)*st + vt*rotvec(1)*rotvec(2),
289 -rotvec(1)*st + vt*rotvec(2)*rotvec(0),
290 rotvec(0)*st + vt*rotvec(2)*rotvec(1),
291 ct + vt*rotvec(2)*rotvec(2)
305 double sa = axis.
Norm();
318 }
else if (
data[4] > 0.0) {
381 return ( a.
data[0]==
b.data[0] &&
382 a.
data[1]==
b.data[1] &&
383 a.
data[2]==
b.data[2] &&
384 a.
data[3]==
b.data[3] &&
385 a.
data[4]==
b.data[4] &&
386 a.
data[5]==
b.data[5] &&
387 a.
data[6]==
b.data[6] &&
388 a.
data[7]==
b.data[7] &&
389 a.
data[8]==
b.data[8] );
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
Rotation M
Orientation of the Frame.
void Make4x4(double *d)
Reads data from an double array.
Frame(const Rotation &R, const Vector &V)
static Frame DH_Craig1989(double a, double alpha, double d, double theta)
Vector p
origine of the Frame
static Frame DH(double a, double alpha, double d, double theta)
represents rotations in 3 dimensional space.
Vector GetRot() const
Returns a vector with the direction of the equiv. axis and its norm is angle.
void GetRPY(double &roll, double &pitch, double &yaw) const
Gives back a vector in RPY coordinates, variables are bound by -PI <= roll <= PI -PI <= Yaw <= PI -PI...
double GetRotAngle(Vector &axis, double eps=epsilon) const
static Rotation Rot2(const Vector &rotvec, double angle)
Along an arbitrary axes. rotvec should be normalized.
void GetEulerZYZ(double &alfa, double &beta, double &gamma) const
Gives back the EulerZYZ convention description of the rotation matrix : First rotate around Z with al...
Vector2 GetXZRot() const
Returns a 2D vector representing the equivalent rotation in the XZ plane that brings the Y axis onto ...
static Rotation Rot(const Vector &rotaxis, double angle)
Along an arbitrary axes. It is not necessary to normalize rotaxis. returns identity rotation matrix i...
static Rotation EulerZYZ(double Alfa, double Beta, double Gamma)
Gives back a rotation matrix specified with EulerZYZ convention : First rotate around Z with alfa,...
static Rotation RPY(double roll, double pitch, double yaw)
Sets the value of this object to a rotation specified with RPY convention: first rotate around X with...
double Normalize(double eps=epsilon)
Vector2()
Does not initialise to Zero().
A concrete implementation of a 3 dimensional vector class.
double Normalize(double eps=epsilon)
Vector()
Does not initialise the Vector to zero. use Vector::Zero() or SetToZero for that.
ccl_device_inline float beta(const float x, const float y)
ccl_device_inline float2 fabs(const float2 a)
bool operator==(const Rotation &a, const Rotation &b)
INLINE Rall1d< T, V, S > atan2(const Rall1d< T, V, S > &y, const Rall1d< T, V, S > &x)
const double PI
the value of pi
IMETHOD bool Equal(const VectorAcc &, const VectorAcc &, double=epsilon)
VectorAcc operator*(const VectorAcc &r1, const VectorAcc &r2)
double epsilon
default precision while comparing with Equal(..,..) functions. Initialized at 0.0000001.