Re: hpr or phr??

"Philippe C.D. Robert" <[email protected]> Sat, 13 Jul 2002 22:55:20 +0200
Newsgroups gmane.comp.gnu.3dkit.general
Message-ID <[email protected]>
Hi,

On Friday, July 12, 2002, at 06:43 PM, Brent Gulanowski wrote:
> Well, I'm only one node (a shape) deep right now (technically two 
> nodes, but the immediate node above, the world's static group, has the 
> default transformation matrix). I believe that means that there is only 
> one matrix being applied, and its aspects are totally dependent on the 
> shape's G3DTransform. At least, that's the only entry point to the 
> shape's orientation that I can find.

That's correct, if you ignore the camera matrix.

> Ignoring the confusion of model and view matrices as introduced below 
> (and ignoring translations), I am simply trying to rotate (roll) my 
> shape around the three cardinal axes, with the shape's "front" facing 
> in either the positive or negative direction. Mentally I would first 
> face it down the correct axis (with either a heading change, for +/-X 
> or -Z, or a pitch change, for +/-Y) and then apply a roll around the 
> shapes new relative Z axis.
>
> Example: think of, say, a stop sign occupying {(0,0,0), (1,0,0), 
> (1,1,0), (0,1,0)} and facing down the global positive Z-axis. It 
> doesn't matter where the viewer is, I don't think.
>
> Now say I want it to face in the -Y direction with the word "STOP" 
> having a relative up in the -X direction. Then it would occupy 
> {(0,0,0), (0,0,1), (-1,0,1), (-1,0,0)}. ("UP" is parallel to the line 
> between the second and third points).
>
> I would imagine doing this with two rotations: pitch 90 + roll 90. But 
> that doesn't work. If I do that, I get this: {(0,0,0), (0,1,0), 
> (0,1,1), (0,0,1)}: facing in the +X direction, "Up" in the +Z 
> direction...

What are you doing exactly, how does your code look like? Always take in 
account the order of matrix operations.

> Oh, now I see. the successive rotations *are* localized, but the 
> rotations are

localized???

> being applied in the reverse of the order I thought they should be. Why 
> do I have it wrong? Using my test features, I see that the pitch is 
> applied after the roll and relative to the local X axis.

Uhm, what's your question exactly? If you have problems understanding 
what HPR is, there are many books and articles describing its theory out 
there.

> OK, whatever my previous misconceptions, I think I can make this work 
> now.

It's really not that hard!

>> The problem here is that GL uses a modeview matrix whereas the model 
>> and the view is not really the same thing. Have a look at the 
>> G3DCamera class to see how this works.
>
> OK, I'll do that. Perhaps now is the time to switch from manually 
> orienting my view to using the provided class. Will that have any 
> impact on what I'm talking about above, though? I mean, I was totally 
> wrong that I was working in global co-ordinates anyway.

You mean using the G3DCamera class? This should not have any impacts on 
what you are doing on the scene.

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip