vector transformation problem

Started by
4 comments, last by mikeman 19 years, 5 months ago
I draw the wings on my airplane like this: Basically, it's a whole bunch of transformations to get to the places to draw the items (I've cut loads of to make it easier to read) ===================================== glTranslatef(xPos, yPos, zPos); glRotatef(pitch, 1.0, 0.0, 0.0); etc //draw cylinder part of airplane (not shown for brevity) //now go to where wing is supposed to be glTranslatef(AIRPLANE_RADIUS, 0.0, AIRPLANE_TAILFIN_LENGTH); glScalef(TAILFIN_LENGTH, TAILFIN_LENGTH,TAILFIN_LENGTH); //draw the wing (simplified) glBegin(GL_TRIANGLES); //POINT ONE - GET MODEL MATRIX HERE ??? glVertex3f(0.0f, 0.0f, 0.0f); //FIRST POINT ON WING glVertex3f(1.0f, 0.0f, 0.0f); glVertex3f(1.0f, 1.0f, 0.0f); glEnd(); ===================================== Now, I assume that if I want to know the precise vector of the first point on the wing I can simply multiply the vector at the first point on the wing (ie (0.0f, 0.0f, 0.0f) ) with the model matrix at POINT ONE ?? I do that - then in order to check I've got it right I draw a big fat sphere at that point by glPushMatrix glLoadIdentity(); glTranslatef(values from model matrix multiply); //draw big sphere here !!! glPopMatrix(); Of course the sphere isn't there !! So what am I doing wrong ??? If I can overcome this problem then I'm nearly finished. cheers Ade
Advertisement
anyone have any ideas ?!

cheers
Show your matrix-vector multiplication code.
You should never let your fears become the boundaries of your dreams.
I don't see any problem with the idea. Where do you place the glGet* call to get the matrix. I'm asking because I see that the comment //GET MODEL MATRIX HERE is between a glBegin/glEnd pair, which is illegal. Get the modelmatrix right before glBegin.
I missed a bit out - the matrix model isn't obtained within a Begin and End section.
also, I simplified the code here to make it easier to understand.

What I actually have done in order to obtain the new vertices is to:

glPushMatrix
glLoadidentity
//repeat all the transformations I did on the airplane
//to get to the drawing the wing part

get the modelmatrix
multiply the vector (0.0, 0.0, 0.0) with this.
write a sphere at this new point to check if my method
is correct.
glPopMatrix


Obviously the sphere doesn't come out even though I made it enormous !

cheers

Quote:
glPushMatrix
glLoadidentity
//repeat all the transformations I did on the airplane
//to get to the drawing the wing part

get the modelmatrix
multiply the vector (0.0, 0.0, 0.0) with this.
write a sphere at this new point to check if my method
is correct.
glPopMatrix


According to those, you manually multiply the vector(0,0,0) with modelmatrix, and then draw the sphere, which gets translated AGAIN with the same modelview matrix. The correct would be:

glPushMatrix
glLoadidentity
//repeat all the transformations I did on the airplane
//to get to the drawing the wing part
get the modelmatrix
multiply the vector (0.0, 0.0, 0.0) with this.

glPushMatrix();
glLoadIdentity();
write a sphere at this new point to check if my method
is correct.
glPopMatrix();

glPopMatrix

This topic is closed to new replies.

Advertisement