# Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

Hi Jean-Olivier,

I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up

The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.

This implies that the rotation vector

RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.

and that

p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)

where phi is same rotation angle in the two cases.

I believe, you should be able to find phi using the ATAN2(x,y) function

Often you use

p = [e_0 e^T]^T

where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^T
e) (I cannot recall the order of the argument in ATAN2 -
sorry).

I hope this clears it up.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogroups.com
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

Thanks, that’s a great explanation. Clears it all up.

Jean-Olivier

From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of AnyBody Support
Sent: Friday, August 31, 2007 5:56 AM
To: anyscript@yahoogroups.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Hi Jean-Olivier,

I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up

The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.

This implies that the rotation vector

RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.

and that

p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)

where phi is same rotation angle in the two cases.

I believe, you should be able to find phi using the ATAN2(x,y) function

Often you use

p = [e_0 e^T]^T

where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^T
e) (I cannot recall the order of the argument in ATAN2 -
sorry).

I hope this clears it up.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

From: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

Hello Michael, hello SÃ¸ren,

I converted my data to Rotation vectors. But as you (and I) expected, some
of my trajectories do not give me straight contiguous vectors. Now, I want
to fix that data since those vector inversions cause problems in the
simulation.

The alternative solution vector is always at 180 degrees from the previous
solution. Therefore, I figured I could just turn the vector around and
correct the angle. When we look at the vector length diagram
(VectorLength.jpg), it is clear that the diagram is turned upside down for
the vectors that are switched (thatâ€™s normal, the vector being reverse, the
angle is measured from the other side: right-hand rule). Knowing this, I
would expect the angles (vectors length) to be something like “-2*pi + Phi”.
But itâ€™s not. It has a value very close to the “not reversed” vector length
(angles) (in this case the difference between the angle of the two

In other words, this means that the rotation vector pointing directly
opposite uses a different angle? How is that possible and how is that
equivalent angle calculated? i.e. The vector <pi/2,0,0>â€™s reversed
equivalent would NOT be <-3pi/2,0,0>?

Hope I make senseâ€¦ I uploaded the diagram of one of the vector length
(angle) that is causing a problem into the files section, under the name
VectorLength.jpg You can see the vector switch at frame 229 and then switch
back at 441. I also uploaded the initial vector trajectory so you can really
see the singularities (OriginalVector.jpg) and finally, I uploaded the
corrected vector, normalized to a length of 1, with the singularity section
reversed (Vec=-Vec/|Vec|) under the name FixedUnitVector.jpg. So it is only
the vector length (Phi) that I am unable to correct.

SEE FOLDER: “RotVector Singularities”
(http://tech.groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
s/)

Hope I make sense, thanks a lot!

Jean-Olivier

From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of Jean-Olivier Racine
Sent: Friday, August 31, 2007 8:16 AM
To: anyscript@yahoogroups.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Thanks, that’s a great explanation. Clears it all up.

Jean-Olivier

From: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of AnyBody Support
Sent: Friday, August 31, 2007 5:56 AM
To: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Hi Jean-Olivier,

I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up

The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.

This implies that the rotation vector

RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.

and that

p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)

where phi is same rotation angle in the two cases.

I believe, you should be able to find phi using the ATAN2(x,y) function

Often you use

p = [e_0 e^T]^T

where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^T
e) (I cannot recall the order of the argument in ATAN2 -
sorry).

I hope this clears it up.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

From: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogroups.com <mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

Hello Jean-Olivier,

Unfortunately, the VectorLength.jpg seems to be missing from the folder with
the other 3 figures. Or did I miss it?

It sounds a bit strange. I guess the vector length is always positive. This
means that a vector pointing the opposite direction must be a different
orientation, unless as you say it is -2pi+Phi. However, this can only be
positive if Phi is larger than 2
pi, which it is not in your case.

I am not sure whether we are missing something here. How do the Euler
parameters look? Are they nice and smooth?

Could you upload those too? And if so.please label them, so it is obvious
which component is which curve.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

www.anybodytech.com

Hello Michael, hello SÃ¸ren,

I converted my data to Rotation vectors. But as you (and I) expected, some
of my trajectories do not give me straight contiguous vectors. Now, I want
to fix that data since those vector inversions cause problems in the
simulation.

The alternative solution vector is always at 180 degrees from the previous
solution. Therefore, I figured I could just turn the vector around and
correct the angle. When we look at the vector length diagram
(VectorLength.jpg), it is clear that the diagram is turned upside down for
the vectors that are switched (thatâ€™s normal, the vector being reverse, the
angle is measured from the other side: right-hand rule). Knowing this, I
would expect the angles (vectors length) to be something like “-2*pi + Phi”.
But itâ€™s not. It has a value very close to the “not reversed” vector length
(angles) (in this case the difference between the angle of the two

In other words, this means that the rotation vector pointing directly
opposite uses a different angle? How is that possible and how is that
equivalent angle calculated? i.e. The vector <pi/2,0,0>â€™s reversed
equivalent would NOT be <-3pi/2,0,0>?

Hope I make senseâ€¦ I uploaded the diagram of one of the vector length
(angle) that is causing a problem into the files section, under the name
VectorLength.jpg You can see the vector switch at frame 229 and then switch
back at 441. I also uploaded the initial vector trajectory so you can really
see the singularities (OriginalVector.jpg) and finally, I uploaded the
corrected vector, normalized to a length of 1, with the singularity section
reversed (Vec=-Vec/|Vec|) under the name FixedUnitVector.jpg. So it is only
the vector length (Phi) that I am unable to correct.

SEE FOLDER: “RotVector Singularities”
(http://tech.
<http://tech.groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
> groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
s/)

Hope I make sense, thanks a lot!

Jean-Olivier

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com] On
Behalf
Of Jean-Olivier Racine
Sent: Friday, August 31, 2007 8:16 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Thanks, that’s a great explanation. Clears it all up.

Jean-Olivier

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of AnyBody Support
Sent: Friday, August 31, 2007 5:56 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Hi Jean-Olivier,

I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up

The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.

This implies that the rotation vector

RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.

and that

p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)

where phi is same rotation angle in the two cases.

I believe, you should be able to find phi using the ATAN2(x,y) function

Often you use

p = [e_0 e^T]^T

where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^T
e) (I cannot recall the order of the argument in ATAN2 -
sorry).

I hope this clears it up.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

Hello Michael,

Sorry for the file, it was called RotVectorSingularities.jpg, I gave you the
wrong pointer. Although the whole time I should probably have called my
problem discontinuities, not singularities, which would have made my e-mail
a lot clearer.

You are right, the discontinuities originate from the EulerParam generation
function. I think it will be easier to fix those discontinuities directly in
the quaternion generation function, as you suggested. So Iâ€™ll try that.

Thanks!

Jean-Olivier

From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of AnyBody Support
Sent: Thursday, September 06, 2007 3:27 AM
To: anyscript@yahoogroups.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Hello Jean-Olivier,

Unfortunately, the VectorLength.jpg seems to be missing from the folder with
the other 3 figures. Or did I miss it?

It sounds a bit strange. I guess the vector length is always positive. This
means that a vector pointing the opposite direction must be a different
orientation, unless as you say it is -2pi+Phi. However, this can only be
positive if Phi is larger than 2
pi, which it is not in your case.

I am not sure whether we are missing something here. How do the Euler
parameters look? Are they nice and smooth?

Could you upload those too? And if so.please label them, so it is obvious
which component is which curve.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

www.anybodytech.com

Hello Michael, hello SÃ¸ren,

I converted my data to Rotation vectors. But as you (and I) expected, some
of my trajectories do not give me straight contiguous vectors. Now, I want
to fix that data since those vector inversions cause problems in the
simulation.

The alternative solution vector is always at 180 degrees from the previous
solution. Therefore, I figured I could just turn the vector around and
correct the angle. When we look at the vector length diagram
(VectorLength.jpg), it is clear that the diagram is turned upside down for
the vectors that are switched (thatâ€™s normal, the vector being reverse, the
angle is measured from the other side: right-hand rule). Knowing this, I
would expect the angles (vectors length) to be something like “-2*pi + Phi”.
But itâ€™s not. It has a value very close to the “not reversed” vector length
(angles) (in this case the difference between the angle of the two

In other words, this means that the rotation vector pointing directly
opposite uses a different angle? How is that possible and how is that
equivalent angle calculated? i.e. The vector <pi/2,0,0>â€™s reversed
equivalent would NOT be <-3pi/2,0,0>?

Hope I make senseâ€¦ I uploaded the diagram of one of the vector length
(angle) that is causing a problem into the files section, under the name
VectorLength.jpg You can see the vector switch at frame 229 and then switch
back at 441. I also uploaded the initial vector trajectory so you can really
see the singularities (OriginalVector.jpg) and finally, I uploaded the
corrected vector, normalized to a length of 1, with the singularity section
reversed (Vec=-Vec/|Vec|) under the name FixedUnitVector.jpg. So it is only
the vector length (Phi) that I am unable to correct.

SEE FOLDER: “RotVector Singularities”
(http://tech.
<http://tech.groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
> groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
s/)

Hope I make sense, thanks a lot!

Jean-Olivier

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com] On
Behalf
Of Jean-Olivier Racine
Sent: Friday, August 31, 2007 8:16 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Thanks, that’s a great explanation. Clears it all up.

Jean-Olivier

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of AnyBody Support
Sent: Friday, August 31, 2007 5:56 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High

Hi Jean-Olivier,

I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up

The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.

This implies that the rotation vector

RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.

and that

p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)

where phi is same rotation angle in the two cases.

I believe, you should be able to find phi using the ATAN2(x,y) function

Often you use

p = [e_0 e^T]^T

where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^T
e) (I cannot recall the order of the argument in ATAN2 -
sorry).

I hope this clears it up.

Best regards,

Michael

Michael Damsgaard, AnyBody Support

From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)

Hello Michael,

In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.

Is it just because of the list reformatting and I should read something
like:

p = [ cos(phi/2), sin(phi/2)*u]

(First column is cos(phi/2) and second one is sin(phi/2)*u?)

Thanks!

Jean-Olivier

Michael Damsgaard`s explanantion:

The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written

RotVector = phi * u

where the Euler parameters are given by

p = [ cos(phi/2) sin(phi/2)*u]

u is the unit vector in the direction of the axis of rotation.

I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.

Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]

[Non-text portions of this message have been removed]