PDA

View Full Version : vector and vertex ?! and camera rotation



McZ
02-13-2002, 01:56 AM
hi everyone http://www.opengl.org/discussion_boards/ubb/smile.gif

if I understand it right the vertex is a point and a vector is a direction from the point or am I wrong ?

and now the camera rotation thing.. how do I create a simple function like the gluLookat but with to points and one up vector ?

exampel:

p1 0,0,-150 // camera position point
p2 0,0,0 // camera lookat point
p3 0,1,0 // camera up vector

how do I calculate the angle to rotate the camera so that it allways will look att the p2 point ? and I meen look att the point not look att that direction from the p1 point.

gluLookat has a lookat vector if I didnīt missunderstand the msdn help file.

satan
02-13-2002, 02:53 AM
just to the vertex and vector thing (to the rotation perhaps somebody else will say something - i am a bit lazy at the moment)

you are right, that a vertex can be understood as a point
but a vector has nothing to do with this (at least not by definition)
a vector has a length and a direction
you can visualize it as an arrow in an 2d or 3d coordinate system (so it has a length and a direction) - visualization for more than 3d are beyond the imagination of most ppl i know (although a vector may have any dimension)
so if you have an vector say (1,0,0) it is an arrow with length 1 pointing allong the positive x-axis
this vector can be located at ANY point in your coord-system (just length and direction are specified not the position)
in order ro understand the concepts of opengl it would be wise to grab some information about vector math and work through
after this it should be easy for you to answer your rotation question yourself

McZ
02-13-2002, 09:45 AM
thanks satan http://www.opengl.org/discussion_boards/ubb/smile.gif
I understand the vector and vertex difference now.. but I still donīt know how to calculate the rotation angle for my camera I have tried but the camera lookat point moves so it doesnīt work the way I want it.. and my math sucks!


[This message has been edited by McZ (edited 02-13-2002).]

satan
02-13-2002, 01:52 PM
i am quite new to opengl and working on my camera modell, too, at the moment
of course i can tell you how i implemented it but it really involves some nice http://www.opengl.org/discussion_boards/ubb/smile.gif vector and some not so really nice matrix math
all i could say is do the math
learn this vector and matrix stuff
without you will be lost
3d graphics programming is math
and the basic stuff of both is not so really complicated
take a look at this and try to make your way through
http://mathworld.wolfram.com/Vector.html

just do not give up

p.s.:i explain how i do my camera in the topic unsure about my camera model - take a look there if you want to know how i do it

[This message has been edited by satan (edited 02-13-2002).]

Jambolo
02-13-2002, 09:19 PM
McZ,

gluLookAt does exactly what you want. The first 3 parameters are the location of the camera. The second three are the point that the camera is supposed to look at. The last three are the up vector.

As far as vertex vs. vector...
First, "vertex" is not the right term. What you are really asking about is the difference between a "position" or "location" and a vector, right? Generally, when you see the word "vector", it means a positionless direction and magnitude. But remember this: a location can be represented by a vector and a vector can be represented by a location, so the two are frequently interchanged.

McZ
02-13-2002, 11:39 PM
Jambolo: No it doesnīt work the way I wanīt I have allready tried and the camera donīt get where I want it.

exampel:

i have one cube at 0,0,0 and one at 0,0,-40 so I know where the center of the world is and the second cube will only be visible at the second camera pos and it will be the same range to that one as the first else it doesnīt work

first pos
0,0,-150 // cam pos
0,0,0 // look at
0,1,0 // up

second pos
0,-150,0 // cam pos
0,0,0 // look at
0,1,0 // up

if this should work the way I want it to the camera should look att the cube at both the positions the difference will be that the second pos it has rotate 90 degres and the world Z positiv will go to the right

satan
02-14-2002, 01:47 AM
i think that the up vector for the second camera position is wrong

as the superbible says about glulookat:

defines a viewing transformation based on the position of the eye, the position of the centre of the scene, and a vector pointing up FROM THE VIEWER'S PERSPECTIVE

that means up should be perpendicular to view
so if you change your view to point along the positive y-axis (as you do) you must recalculate your upvector - or since you do not want to hear about this math stuff

try it with up=(0,0,1)

McZ
02-14-2002, 03:15 AM
I solved the problem http://www.opengl.org/discussion_boards/ubb/smile.gif

the gluLookAt works ok but the problem vas that if I have Z:-150 in gluLookAt it would be the same as if I glTranslatef(0.0f, 0.0f, 150.0f) and then everything was drawn off-screen so thats why it didnīt work http://www.opengl.org/discussion_boards/ubb/smile.gif