Initial orientation/rotation

Started by
4 comments, last by Blight 22 years, 6 months ago
If an object is centered at [0, 0, 0], but no orientation is provided, what "direction" are they facing? Is this indeterminate? Is there a default "assumed" direction? Also what should an orientation be stored as internally? A matrix? Quaternion? Vector? Other? Thanks!
Blighty
Advertisement
It all depends!
In Open GL, the initial orientation is :
z is into the screen,
x is left right, and y is up and down!

The most used are the left_hand system, and the righthand system. as used by OpenGL.

If you only have [0,0,0] there are no orientation! If this is a vector, its directed nowhere! (or maybe at itselfe)
If you add a camera, to viewe you orientation, the camera will add some orientation, and therfor it will be oriented!

You may do this whatewer you want!
If your talking about 3D world programming, you can use a orientation [x,y,z] and a direction [turn,pitch,rol] on the camera and ewery objekt! this is enough to create a full world, but you need to define where direction[0,0,0] points, and what way the object/camera rotates when any of the 3 angles increase.....

All the 3D APIs, have their own system, you can use theires, or create you own, if so you need to learn 3D math

my myselfe use a 3 dim vector for position, a 3x3 matrix for orientation, witch i calculate with 3 angles!
-Anders-Oredsson-Norway-
Ah! OK that helps a fair bit thanks!

I''m trying to do my own 3D system (yes learning Matrix math etc and have currently defined orientation using a 3x3 matrix. So my next question I guess is: assuming my object is "facing" along the positive x-axis, and I''m using a left-handed system, what will my 3x3 matrix contain? That''s the bit that is confusing me... will it be something like:

|1 0 0|
|0 0 0|
|0 0 0|

???

Blight
Blighty
What you're talking about here is called "Orthogonal Basis Vectors" Meaning they have to be at right angles, and unit vectors, and along with the position define a particular reference frame.

Generally this looks like

|Rx Ry Rz 0|
|Ux Uy Uz 0|
|Dx Dy Dz 0|
|Px Py Pz 1|

R = right U = up D = direction P = position

Looking at the identity matrix, it's easy to see now that it defines the standard coordinate system..

Right = 1,0,0
Up = 0,1,0
Direction = 0,0,1
Position = 0,0,0

When you rotate one of the vectors, the rest of them rotate too, unless you're rotating around one of the orientation vectors themselves, which would mean only two of them would rotate. So if you pointed the Direction at the X axis, you have to rotate the Right vector along with the direction, so they remain orthogonal..

Orientation pointing in the X direction..

| 0 0 -1 0|
| 0 1 0 0|
| 1 0 0 0|
| 0 0 0 1|

As you can see, the Up vector didn't change, but the Right vector is now pointing at -Z axis.

--bart



Edited by - bpj1138 on September 25, 2001 9:40:56 AM
--bart
Actually, uncutno''s answer isn''t complete, and there''s a slight error/miscommunication.

The left-handed coordinate system uncutno refered to is the *camera* coordinate system. The *model* coordinate system----which is the coordinate system you define your model in----is a right-handed system.

From the OpenGL Red Book, the default orientation is positive x to the right, positive y up, positive z *out* of the screen. This is a right-handed coordinate system. You can always tell if a system is right handed if the cross product of the x axis with the y axis points in the positive z axis. (Actually, any permutation of xyz works. x cross y = +z, y cross z = +x, z cross x = +y.)

The camera by default looks down the negative z axis. If you move the camera along the positive z axis without changing its orientation, you will be able to see the origin of the world. The camera retains positive x to the right and positive y up. The camera''s local z axis is just considered to be in the negative world z direction because objects have to move along the negative world z to be in front of the camera. You can consider camera z to be negative world z. And so camera x cross camera y = negative camera z----a right-handed system.

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.
Graham Rhodes Moderator, Math & Physics forum @ gamedev.net
I''m also moving this to the graphics programming and theory section.

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.
Graham Rhodes Moderator, Math & Physics forum @ gamedev.net

This topic is closed to new replies.

Advertisement