Martin Masson (howmedica)

08-21-1997, 06:48 AM

Dear friends,

Thanks to all of you who replied to last week's inquiry.

Here is a summary:

ORIGINAL POSTING:

__________________________________________________ ____________________

> Date: Sat, 16 Aug 1997 04:18:40 -0400

> From: "Martin Masson (Howmedica)"

> Subject: Requesting Help to Convert Rotation Sequences

> Dear Colleagues:

> I am using ADAMS (Mechanical Dynamics Inc.) to study the effects of

> prostheses design on human gait.

> In ADAMS V9.0, motions can be specified to act directly between a

> pair of markers. To control the orientation of the I marker with

> respect to the J marker, ADAMS requires a Body-three 1-2-3 Euler

> rotation sequence. If the rotations between two markers have been

> measured in the global sequence z, y, x (which corresponds to a

> Space-three 3-2-1 rotation sequence), the user has to convert this

> to a Body 1-2-3 rotation sequence before specifying it in a motion.

> I wonder if any of you have ever programmed such conversion. I have

> looked in the Biomch-l archives and found PRP.FOR by Woltring

> (1988-02-22), but I am not sure that this corresponds to my needs.

> Ideally, I would like to be able to convert any Body-three,

> Body-two, Space-three, or Space-two rotation sequence into a

> specific Body or Space rotation sequence:

> ex: - converting from Space-three 3-2-1 to Body-three 1-2-3

> - converting from Body-two 3-1-3 to Body-three 2-3-1

> - converting from Body-three 1-3-2 to Space-two 1-3-1

> - etc...

> Thanks for any help,

> Martin Masson

> massom1@pfizer.com

__________________________________________________ ____________________

REPLIES:

1)

Martin,

The clearest reference I have seen on the subject is "An Introduction

to Robotics: Mechanics and Control" by John J. Craig. The chapter on

kinematics is where you want to look. I am not familiar with your

"Body-two, Body-three, etc." notation, but I think I know what you are

trying to do.

The 1-2-3 (or original x, new y, newest z) Euler angle rotation matrix

is exactly the same as the 3-2-1 (original z, original y, original x)

Euler angle rotation matrix, and so on. See Craig pp. 47 -- 51 for

more explanation.

Good luck and feel free to contact me directly,

Mike Coleman

coleman@tam.cornell.edu

__________________________________________________ ____________________

2)

Dear M.M.

I recommend proceeding in 2 steps (1) convert the "original" Euler

angles into the corresponding 3X3 direction cosine (re:rotation)

matrix R and then (2) compute your "new" Euler angles from R. (The

math for both operations is fairly simple, and I'll send you the

details in the unlikely event you need help.) I dealt with this

problem many times in the aerospace industry, and this is the only way

of handling it I ever used.

Have a nice day

__________________________________________________ ____________________

3)

You already know your 3x3 rotation matrix, lets called it R321 (or

RZYX) that can be calculated using the measured angles you know:

RZYX= RX x RY x RZ

where,

RX is a 3x3 planar rotation matrix around axis X (you know this angle)

RY is a 3x3 planar rotation matrix around axis Y (you know this angle)

RZ is a 3x3 planar rotation matrix around axis Z (you know this angle)

To know the rotation angles for a XYZ sequence, you should use the

following equation:

RZYX (that you have already calculated) =RZ x RY x RX

where,

RX is a 3x3 planar rotation matrix around axis X (you don't know this

angle) RY is a 3x3 planar rotation matrix around axis Y (you don't

know this angle) RZ is a 3x3 planar rotation matrix around axis Z (you

don't know this angle)

You could use Math Cad and the function minerr to solve this equation

and know the answer in a matter of seconds.

I hope this helps you,

Cinzia.

Dr. Cinzia Simonis de Cloke

Computational Engineering and Design Centre Department of Mechanical

Engineering University of Southampton

Highfield

Phone: + 44 1703 592713 Southampton

Fax: + 44 1703 593230 S017 1BJ

Email: csc@soton.ac.uk

England, UK.

http://www.soton.ac.uk/~csc

__________________________________________________ ____________________

4)

Dear Martin,

Craig's book cited below describes what you need to convert rotation

sequences in section 2.8 pp.43-56.

Craig, J.J., Introduction to Robotics, second edition, Addison-Wesley,

1989

He includes all twelve global-fixed axis rotation sequences and all

twelve body-fixed axis rotation sequences in Appendix B pp. 442-444.

Please note the typographical corrections shown below.

He loosely calls all body-fixed axis rotation sequences Euler angle

sequences. More specifically, Euler sequences are about body-fixed

axes where the first and third rotations are about the same axis e.g.

Z-X-Z, X-Y-X. Cardan-Bryant sequences are about body-fixed axes where

no axis repeats e.g. X-Y-Z, Z-X-Y.

Note that rotation matrices for body-fixed Euler sequences match

rotation matrices for corresponding global-fixed sequences e.g. R[

Euler Z-X-Z ] = R[ global Z-X-Z ] while rotation matrices for

body-fixed Cardan-Bryant sequences correspond to rotation matrices for

anti-cyclic global fixed sequences e.g. R[ Cardan-Bryant X-Y-Z ] = R[

global Z-Y-X ] .

TYPOGRAPHICAL CORRECTIONS TO CRAIG, 2ND EDITION

Element (2,2) of Euler angle R[ Y' X' Z' ] on p. 442 should read

cos(beta)*cos(gamma)

Element (2,2) of fixed angle R[ Z X Y ] on p. 444 should read

cos(beta)*cos(gamma)

Best wishes,

Joe Sommer

* H.J. Sommer III, Professor of Mechanical Engineering, 327 Reber

Building The Pennsylvania State University, University Park, PA 16802

(814)863-8997 FAX (814)863-4848 hjs1@psu.edu www.me.psu.edu/sommer/

__________________________________________________ ____________________

5)

Hi Martin,

I have exactly what you describe, but it will require some digging

to locate it. It is relatively straightforward linear algebra but

requires a fair amount of equation wrestling that can get ugly fast.

If no else has these availble for you, let me know I will start

digging for you. It would proably take me a week or so.

Trey

J.J. Trey Crisco, Ph.D.

Director Bioengineering Laboratory, Department of Orthopaedics, RIH

Assistant Professor, Department of Orthopaedics, RIH

Adjunct Assistant Professor, Division of Engineering, Brown University

Mailing address:

Orthopaedic Research, SWP-3

Rhode Island Hospital

593 Eddy Street

Providence, RI 02903

Voice: 401-444-4231

Fax: 401-444-4559

Email: joseph_crisco_iii@brown.edu

__________________________________________________ ____________________

6)

Martin,

I've had to deal with this problem before and it has a pretty simple

(but non-intuitive) solution. It turns out that if you write the

rotation matrices for the two transformations you're talking about in

terms of the rotation angles, they are the same matrix. What this

means is that if you have Space-three 3-2-1 angles c (about 3-axis), b

(about 2-axis), and a (about 1-axis), this is equivalent to having

Body 1-2-3 angles of a, b, and c.

I thought this result was surprising until I found the following in

Craig's Introduction to Robotics:

"This somewhat nonintuitive result holds in general: three rotations

taken about fixed axes yield the same final orientation as the same

three rotations taken in opposite order about the axes of the moving

frame." (p. 49)

Hope this helps you out. If you get a chance, I'd be interested to

hear about what your working on - it sounds similar to my work, which

involves kinematic and dynamic simulations of total knee replacement

mechanics.

Steve

Stephen Piazza

Graduate Student

Department of Mechanical Engineering Northwestern University

piazza@nwu.edu

http://sulu.smpp.nwu.edu/~steve

__________________________________________________ ____________________

7)

Martin,

I do not know of any "canned" program that already does what you want,

i.e., for any given rotation matrix (e.g., as generated by an given

initial body-or space-fixed rotation sequence), return the three

rotation angles corresponding to a different body- or spaced-fixed

rotation sequence.

This said, working out such a program yourself should not be too

difficult to a task. If you look in Appendix I of "Spacecraft

Dynamics" by Kane, Likins, and Levinson, you will find a listing of

all possible body- and space-fixed rotation sequences. So given three

rotation angles from a known rotation sequence (e.g., Space-three:

3-2-1), it's just plug-and-chug to get the corresponding rotation

matrix. The tricky part is then extracting from this rotation matrix

the set of three rotation angles corresponding to the new desired

rotation sequence (e.g., Body-three: 1-2-3). Section 1.7 of

"Spacecraft Dynamics" provides a nice example of how to do this.

So this is easily do-able, but would take some programming time on

your part. Sorry not to have a simpler solution.

B.J. Fregly

Benjamin J. Fregly, Ph.D.

Research and Development Engineer

Pro/MECHANICA MOTION Analysis Technology Parametric Technology

Corporation

2590 North First Street, Suite 200

San Jose, CA 95131

Tel: 408/953-8650

E-mail: bj@sj.ptc.com

__________________________________________________ ____________________

8)

Hi,

I'm not sure I understand your terminology fully. I don't understand

the Space versus Body reference. Finding the rotation of 3-D bodies in

motion is relatively easy to program, especially in matlab. I could

give you references, pretty much any robotics text, if I knew exactly

what you needed. Woltring is the expert on 3D rigid body motion but I

don't have his references here. I could give you a copy of programs

that I've written but they are in matlab which works with matrices so

the code is only a few lines. So feel free to contact me for more

info.

Marilyn Powers

Human Performance Lab

University of Calgary

Calgary, Alberta, Canada T2N 1N4

email: mjpowers@kin.ucalgary.ca

phone: 403-220-3853

fax: 403-284-3553

__________________________________________________ ____________________

9)

Martin:

I worked with one of your former colleagues at Howmedica for a time

while I was going to grad school at Purdue - Todd Render. It's

possible that you and I have even met before, though I can't say I

remember for sure. I was running some wear tests on the Purdue Knee

Simulator for Todd to look at the Duracon unicompartmental implants.

Anyway, I saw your posting on Biomch-L and it wasn't clear to me

whether you are looking for clarification on HOW to perform the

conversions you described or you are just looking for some developed

code in order to save time. If the former is the case, then I would

be happy to discuss it with you. If the latter, then I probably can't

help much as I have not had occasion to perform the conversions in

question.

Let me know if you don't get the responses you were hoping for and

I'll be happy to go over the conversion process. Conceptually, it

shouldn't be difficult. However, in practice, it might take a few

days of programming to produce code that performs all of the

permutations of conversion to which you alluded.

Kind Regards,

Anthony J. Petrella

University of Pittsburgh - petrella@sprite.me.pitt.edu Biomechanics

Laboratory - Department of Mechanical Engineering Musculoskeletal

Research Center - Dept. of Orthopaedic Surgery

__________________________________________________ ____________________

10)

Hey Martin,

Here's a couple of references that I used to program coordinate

transfermations.

Meirovitch, L. Motion Relative to Rotating Reference Frames and Rigid

Body Dynamics in Methods of Analytical Dynamics (McGraw Hill Book

Company, Toronto, Canada. 1970) pp. 101-112, and 122-143.

Craig, J.J., Spatial Descriptions and Transformations in Introduction

to Robotics Mechanics and Control Second Edition (Addison-Wesley

Publishing Company, Don Mills, Ontario, 1989) pp.19-59.

I guess I don't have any Woltring papers on this particular subject,

only helical axes etc.

By the way the weather here in Calgary is great! No humidity like

Montreal, hot in the day, cool at night. I'm heading back home to

Ontario next week where its probably hot and humid. How is N.J.

compared to Montreal? I don't know if I could ever live in the states.

Anyway, hope this helps.

Marilyn Powers

Human Performance Lab

University of Calgary

Calgary, Alberta, Canada T2N 1N4

email: mjpowers@kin.ucalgary.ca

phone: 403-220-3853

fax: 403-284-3553

__________________________________________________ ____________________

11)

Well, here's a couple of C-functions that might be of help. I hacked

these out from a larger coordinate transformation library of mine that

I wrote about 10 years ago. LEGAL DISCLAIMMER: "This code does

nothing useful in and of itself"

Unfortunately, I only programmed the inverse solution to the 1-2-3

Euler case. :( Anyway, the description and intended use

follows. Enjoy!

First construct the direction COLUMN cosine matrix (that is, the

top/left 3x3 column submatrix in the homogeneous transformation). Note

that, you can construct any dir-cosine matrix by seqentially calling

this function. eg, here's what you would do if you wanted to construct

x-z-x (1-3-1):

>>>>

>>>>

Now the second step is to solve for the Euler rotations WITH RESPECT

TO A FIXED SET OF AXES as:

(a) first a rotation about X

(b) then a rotation about Y

(c) then a rotation about Z

>>>>

>>>>

Ted Morris

tmorris@me.umn.edu

612-625-3520

Center For Advanced Manufacturing Design And Control

612-625-9881 Institute of Technology, U of Minnesota

FAX: 612-625-8884

"McBride fell 12 stories, hitting the pavement like a Hefty Bag filled

with vegetable soup." (Paul Sabourin, Silver Spring)

Thanks to all of you who replied to last week's inquiry.

Here is a summary:

ORIGINAL POSTING:

__________________________________________________ ____________________

> Date: Sat, 16 Aug 1997 04:18:40 -0400

> From: "Martin Masson (Howmedica)"

> Subject: Requesting Help to Convert Rotation Sequences

> Dear Colleagues:

> I am using ADAMS (Mechanical Dynamics Inc.) to study the effects of

> prostheses design on human gait.

> In ADAMS V9.0, motions can be specified to act directly between a

> pair of markers. To control the orientation of the I marker with

> respect to the J marker, ADAMS requires a Body-three 1-2-3 Euler

> rotation sequence. If the rotations between two markers have been

> measured in the global sequence z, y, x (which corresponds to a

> Space-three 3-2-1 rotation sequence), the user has to convert this

> to a Body 1-2-3 rotation sequence before specifying it in a motion.

> I wonder if any of you have ever programmed such conversion. I have

> looked in the Biomch-l archives and found PRP.FOR by Woltring

> (1988-02-22), but I am not sure that this corresponds to my needs.

> Ideally, I would like to be able to convert any Body-three,

> Body-two, Space-three, or Space-two rotation sequence into a

> specific Body or Space rotation sequence:

> ex: - converting from Space-three 3-2-1 to Body-three 1-2-3

> - converting from Body-two 3-1-3 to Body-three 2-3-1

> - converting from Body-three 1-3-2 to Space-two 1-3-1

> - etc...

> Thanks for any help,

> Martin Masson

> massom1@pfizer.com

__________________________________________________ ____________________

REPLIES:

1)

Martin,

The clearest reference I have seen on the subject is "An Introduction

to Robotics: Mechanics and Control" by John J. Craig. The chapter on

kinematics is where you want to look. I am not familiar with your

"Body-two, Body-three, etc." notation, but I think I know what you are

trying to do.

The 1-2-3 (or original x, new y, newest z) Euler angle rotation matrix

is exactly the same as the 3-2-1 (original z, original y, original x)

Euler angle rotation matrix, and so on. See Craig pp. 47 -- 51 for

more explanation.

Good luck and feel free to contact me directly,

Mike Coleman

coleman@tam.cornell.edu

__________________________________________________ ____________________

2)

Dear M.M.

I recommend proceeding in 2 steps (1) convert the "original" Euler

angles into the corresponding 3X3 direction cosine (re:rotation)

matrix R and then (2) compute your "new" Euler angles from R. (The

math for both operations is fairly simple, and I'll send you the

details in the unlikely event you need help.) I dealt with this

problem many times in the aerospace industry, and this is the only way

of handling it I ever used.

Have a nice day

__________________________________________________ ____________________

3)

You already know your 3x3 rotation matrix, lets called it R321 (or

RZYX) that can be calculated using the measured angles you know:

RZYX= RX x RY x RZ

where,

RX is a 3x3 planar rotation matrix around axis X (you know this angle)

RY is a 3x3 planar rotation matrix around axis Y (you know this angle)

RZ is a 3x3 planar rotation matrix around axis Z (you know this angle)

To know the rotation angles for a XYZ sequence, you should use the

following equation:

RZYX (that you have already calculated) =RZ x RY x RX

where,

RX is a 3x3 planar rotation matrix around axis X (you don't know this

angle) RY is a 3x3 planar rotation matrix around axis Y (you don't

know this angle) RZ is a 3x3 planar rotation matrix around axis Z (you

don't know this angle)

You could use Math Cad and the function minerr to solve this equation

and know the answer in a matter of seconds.

I hope this helps you,

Cinzia.

Dr. Cinzia Simonis de Cloke

Computational Engineering and Design Centre Department of Mechanical

Engineering University of Southampton

Highfield

Phone: + 44 1703 592713 Southampton

Fax: + 44 1703 593230 S017 1BJ

Email: csc@soton.ac.uk

England, UK.

http://www.soton.ac.uk/~csc

__________________________________________________ ____________________

4)

Dear Martin,

Craig's book cited below describes what you need to convert rotation

sequences in section 2.8 pp.43-56.

Craig, J.J., Introduction to Robotics, second edition, Addison-Wesley,

1989

He includes all twelve global-fixed axis rotation sequences and all

twelve body-fixed axis rotation sequences in Appendix B pp. 442-444.

Please note the typographical corrections shown below.

He loosely calls all body-fixed axis rotation sequences Euler angle

sequences. More specifically, Euler sequences are about body-fixed

axes where the first and third rotations are about the same axis e.g.

Z-X-Z, X-Y-X. Cardan-Bryant sequences are about body-fixed axes where

no axis repeats e.g. X-Y-Z, Z-X-Y.

Note that rotation matrices for body-fixed Euler sequences match

rotation matrices for corresponding global-fixed sequences e.g. R[

Euler Z-X-Z ] = R[ global Z-X-Z ] while rotation matrices for

body-fixed Cardan-Bryant sequences correspond to rotation matrices for

anti-cyclic global fixed sequences e.g. R[ Cardan-Bryant X-Y-Z ] = R[

global Z-Y-X ] .

TYPOGRAPHICAL CORRECTIONS TO CRAIG, 2ND EDITION

Element (2,2) of Euler angle R[ Y' X' Z' ] on p. 442 should read

cos(beta)*cos(gamma)

Element (2,2) of fixed angle R[ Z X Y ] on p. 444 should read

cos(beta)*cos(gamma)

Best wishes,

Joe Sommer

* H.J. Sommer III, Professor of Mechanical Engineering, 327 Reber

Building The Pennsylvania State University, University Park, PA 16802

(814)863-8997 FAX (814)863-4848 hjs1@psu.edu www.me.psu.edu/sommer/

__________________________________________________ ____________________

5)

Hi Martin,

I have exactly what you describe, but it will require some digging

to locate it. It is relatively straightforward linear algebra but

requires a fair amount of equation wrestling that can get ugly fast.

If no else has these availble for you, let me know I will start

digging for you. It would proably take me a week or so.

Trey

J.J. Trey Crisco, Ph.D.

Director Bioengineering Laboratory, Department of Orthopaedics, RIH

Assistant Professor, Department of Orthopaedics, RIH

Adjunct Assistant Professor, Division of Engineering, Brown University

Mailing address:

Orthopaedic Research, SWP-3

Rhode Island Hospital

593 Eddy Street

Providence, RI 02903

Voice: 401-444-4231

Fax: 401-444-4559

Email: joseph_crisco_iii@brown.edu

__________________________________________________ ____________________

6)

Martin,

I've had to deal with this problem before and it has a pretty simple

(but non-intuitive) solution. It turns out that if you write the

rotation matrices for the two transformations you're talking about in

terms of the rotation angles, they are the same matrix. What this

means is that if you have Space-three 3-2-1 angles c (about 3-axis), b

(about 2-axis), and a (about 1-axis), this is equivalent to having

Body 1-2-3 angles of a, b, and c.

I thought this result was surprising until I found the following in

Craig's Introduction to Robotics:

"This somewhat nonintuitive result holds in general: three rotations

taken about fixed axes yield the same final orientation as the same

three rotations taken in opposite order about the axes of the moving

frame." (p. 49)

Hope this helps you out. If you get a chance, I'd be interested to

hear about what your working on - it sounds similar to my work, which

involves kinematic and dynamic simulations of total knee replacement

mechanics.

Steve

Stephen Piazza

Graduate Student

Department of Mechanical Engineering Northwestern University

piazza@nwu.edu

http://sulu.smpp.nwu.edu/~steve

__________________________________________________ ____________________

7)

Martin,

I do not know of any "canned" program that already does what you want,

i.e., for any given rotation matrix (e.g., as generated by an given

initial body-or space-fixed rotation sequence), return the three

rotation angles corresponding to a different body- or spaced-fixed

rotation sequence.

This said, working out such a program yourself should not be too

difficult to a task. If you look in Appendix I of "Spacecraft

Dynamics" by Kane, Likins, and Levinson, you will find a listing of

all possible body- and space-fixed rotation sequences. So given three

rotation angles from a known rotation sequence (e.g., Space-three:

3-2-1), it's just plug-and-chug to get the corresponding rotation

matrix. The tricky part is then extracting from this rotation matrix

the set of three rotation angles corresponding to the new desired

rotation sequence (e.g., Body-three: 1-2-3). Section 1.7 of

"Spacecraft Dynamics" provides a nice example of how to do this.

So this is easily do-able, but would take some programming time on

your part. Sorry not to have a simpler solution.

B.J. Fregly

Benjamin J. Fregly, Ph.D.

Research and Development Engineer

Pro/MECHANICA MOTION Analysis Technology Parametric Technology

Corporation

2590 North First Street, Suite 200

San Jose, CA 95131

Tel: 408/953-8650

E-mail: bj@sj.ptc.com

__________________________________________________ ____________________

8)

Hi,

I'm not sure I understand your terminology fully. I don't understand

the Space versus Body reference. Finding the rotation of 3-D bodies in

motion is relatively easy to program, especially in matlab. I could

give you references, pretty much any robotics text, if I knew exactly

what you needed. Woltring is the expert on 3D rigid body motion but I

don't have his references here. I could give you a copy of programs

that I've written but they are in matlab which works with matrices so

the code is only a few lines. So feel free to contact me for more

info.

Marilyn Powers

Human Performance Lab

University of Calgary

Calgary, Alberta, Canada T2N 1N4

email: mjpowers@kin.ucalgary.ca

phone: 403-220-3853

fax: 403-284-3553

__________________________________________________ ____________________

9)

Martin:

I worked with one of your former colleagues at Howmedica for a time

while I was going to grad school at Purdue - Todd Render. It's

possible that you and I have even met before, though I can't say I

remember for sure. I was running some wear tests on the Purdue Knee

Simulator for Todd to look at the Duracon unicompartmental implants.

Anyway, I saw your posting on Biomch-L and it wasn't clear to me

whether you are looking for clarification on HOW to perform the

conversions you described or you are just looking for some developed

code in order to save time. If the former is the case, then I would

be happy to discuss it with you. If the latter, then I probably can't

help much as I have not had occasion to perform the conversions in

question.

Let me know if you don't get the responses you were hoping for and

I'll be happy to go over the conversion process. Conceptually, it

shouldn't be difficult. However, in practice, it might take a few

days of programming to produce code that performs all of the

permutations of conversion to which you alluded.

Kind Regards,

Anthony J. Petrella

University of Pittsburgh - petrella@sprite.me.pitt.edu Biomechanics

Laboratory - Department of Mechanical Engineering Musculoskeletal

Research Center - Dept. of Orthopaedic Surgery

__________________________________________________ ____________________

10)

Hey Martin,

Here's a couple of references that I used to program coordinate

transfermations.

Meirovitch, L. Motion Relative to Rotating Reference Frames and Rigid

Body Dynamics in Methods of Analytical Dynamics (McGraw Hill Book

Company, Toronto, Canada. 1970) pp. 101-112, and 122-143.

Craig, J.J., Spatial Descriptions and Transformations in Introduction

to Robotics Mechanics and Control Second Edition (Addison-Wesley

Publishing Company, Don Mills, Ontario, 1989) pp.19-59.

I guess I don't have any Woltring papers on this particular subject,

only helical axes etc.

By the way the weather here in Calgary is great! No humidity like

Montreal, hot in the day, cool at night. I'm heading back home to

Ontario next week where its probably hot and humid. How is N.J.

compared to Montreal? I don't know if I could ever live in the states.

Anyway, hope this helps.

Marilyn Powers

Human Performance Lab

University of Calgary

Calgary, Alberta, Canada T2N 1N4

email: mjpowers@kin.ucalgary.ca

phone: 403-220-3853

fax: 403-284-3553

__________________________________________________ ____________________

11)

Well, here's a couple of C-functions that might be of help. I hacked

these out from a larger coordinate transformation library of mine that

I wrote about 10 years ago. LEGAL DISCLAIMMER: "This code does

nothing useful in and of itself"

Unfortunately, I only programmed the inverse solution to the 1-2-3

Euler case. :( Anyway, the description and intended use

follows. Enjoy!

First construct the direction COLUMN cosine matrix (that is, the

top/left 3x3 column submatrix in the homogeneous transformation). Note

that, you can construct any dir-cosine matrix by seqentially calling

this function. eg, here's what you would do if you wanted to construct

x-z-x (1-3-1):

>>>>

>>>>

Now the second step is to solve for the Euler rotations WITH RESPECT

TO A FIXED SET OF AXES as:

(a) first a rotation about X

(b) then a rotation about Y

(c) then a rotation about Z

>>>>

>>>>

Ted Morris

tmorris@me.umn.edu

612-625-3520

Center For Advanced Manufacturing Design And Control

612-625-9881 Institute of Technology, U of Minnesota

FAX: 612-625-8884

"McBride fell 12 stories, hitting the pavement like a Hefty Bag filled

with vegetable soup." (Paul Sabourin, Silver Spring)