• Advertisement
Sign in to follow this  

Ok, I have a somewhat complicated math issue (well, to me it is). Rotating objects around an axis that have a slope.

This topic is 1932 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Say I have two objects that Im drawing in Opengl. The first object is my base object and has offset (x,y).This is part 1. The second object offset is (X+2,y+3).Part 2. These two objects are drawn separately but make up a whole "object" in the game. I need them to always have this relationship with each other so the game "object" looks right in the game. Now when I want to rotate this "object" each part is rotated separately and obviously this changes how it looks (because they stay at the same slope to each other while they rotate).
I know that to rotate for just one object being drawn I need to rotate at the origin and then move it to where I want it to be. This is easy for the base object but I need the second part to to also stay in the right position relative to that base object. At no angle this is accomplished by giving it the offset (x+2,y+3) like I said before, but when I rotate it obviously the slope is now going to need to change for it to stay in the "right place". I need to account for this change so the part stays "in its correct place". I need to know how the rotation effects the slope of part two.

I basically need an equation that accounts for the rotation when determining the slope. Theses two "objects" are going to rotate around my player.


I hope I explained this well.

Share this post


Link to post
Share on other sites
Advertisement
You want to rotate (2, 3) then, and add the result of that instead of (2, 3). How do you perform the rotations now?
If you use glTranslate and glRotate etc, then just choose the operation order so that glRotate is applied after the (2, 3) translation. If you do your matrices some other way, then just multiply (2, 3) with your rotation matrix to get the correctly rotated offset.

Share this post


Link to post
Share on other sites
How your object is drawed, with sprites or vectoric? Or is it 3d?
I had something similar problem, but my objects was made form bunch of points and all drawings was made from these points, 2 of points are control points that actualy are rotated each loop , and other points precalcs from these 2 control points only before drawing.
Maybe it could be usefull in your game? Edited by serumas

Share this post


Link to post
Share on other sites
I'll respond here since it was first.

Here's probably what I would do: create a class called "Group" (or something) that stores both of these objects. This class, Group, stores a transformation matrix that represents the scale, position, and rotation of the group. Each individual object then just stores its offset from the group's center (and once you set it once, you never have to change it, even when rotation/moving/scaling the group).

When you go to draw, take the Group's matrix and then 1) take the first object and compose its offset with the Group's matrix, and draw using this matrix, then 2) take the second object and compose its offset with the Group's matrix, and draw using this matrix.

Try this, and if it doesn't work, post some of your code.


If you use glTranslate and glRotate[...]

I don't think we should be encouraging anyone using those functions, seeing as they were deprecated in OpenGL 3.0 and removed in OpenGL 3.1. What you pointed out is useful and correct, but I just want to point out that if the OP is using them, he should stop. Edited by Cornstalks

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement