Hitokage

11-07-2012, 12:33 PM

Hi guys.

Need help with something.

I have imported model and I need to rotate part of it.

Here is what I mean.

I have this in the beginning:

http://s12.postimage.org/go1ucs2fh/image.jpg

And need to transform it to this (like when I press button I want this part of model to smoothly rotate until right angle):

http://s15.postimage.org/qqiyrkr0r/image.jpg

So this is the code I used

//somewhere in the beginning

float angle = 0.0;

case GLUT_KEY_RIGHT: //when this button is pressed

int i, xo = 20; // i is for loop and xo is x coordinate of the circle center

for (i=0; i<=object.vertices_qty; i++) //go through all the vertices

{

if(object.vertex[i].x > xo) //if the x coordinate is bigger than xo - choose the part to rotate

{

if(object.vertex[i].r == 0) //calculate the circle radius if it hasn't been already done

object.vertex[i].r = object.vertex[i].x-xo;

angle += 0.001; //increment the angle

//now I want to calculate new vertex coordinates (after rotation)

object.vertex[i].y = object.vertex[i].w + object.vertex[i].r*cos(angle); //object.vertex[i].w is original y coordinate (before rotation) which is also coordinate of the circle center

object.vertex[i].x = xo + object.vertex[i].r*sin(angle);

}

}

break;

What is the problem here? The code is not working properly. The result is trash :D.

Sry if there are some serious mistakes. I am just a beginner in OpenGL and geometry is not my big friend :D.

Have a nice day

Need help with something.

I have imported model and I need to rotate part of it.

Here is what I mean.

I have this in the beginning:

http://s12.postimage.org/go1ucs2fh/image.jpg

And need to transform it to this (like when I press button I want this part of model to smoothly rotate until right angle):

http://s15.postimage.org/qqiyrkr0r/image.jpg

So this is the code I used

//somewhere in the beginning

float angle = 0.0;

case GLUT_KEY_RIGHT: //when this button is pressed

int i, xo = 20; // i is for loop and xo is x coordinate of the circle center

for (i=0; i<=object.vertices_qty; i++) //go through all the vertices

{

if(object.vertex[i].x > xo) //if the x coordinate is bigger than xo - choose the part to rotate

{

if(object.vertex[i].r == 0) //calculate the circle radius if it hasn't been already done

object.vertex[i].r = object.vertex[i].x-xo;

angle += 0.001; //increment the angle

//now I want to calculate new vertex coordinates (after rotation)

object.vertex[i].y = object.vertex[i].w + object.vertex[i].r*cos(angle); //object.vertex[i].w is original y coordinate (before rotation) which is also coordinate of the circle center

object.vertex[i].x = xo + object.vertex[i].r*sin(angle);

}

}

break;

What is the problem here? The code is not working properly. The result is trash :D.

Sry if there are some serious mistakes. I am just a beginner in OpenGL and geometry is not my big friend :D.

Have a nice day