Ok, I have a somewhat complicated math issue (well, to me it is). Rotating objects around an axis that have a slope.
Members - Reputation: 145
Posted 09 October 2012 - 06:22 AM
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.
Crossbones+ - Reputation: 4714
Posted 09 October 2012 - 06:37 AM
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.
Members - Reputation: 755
Posted 09 October 2012 - 07:11 AM
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, 09 October 2012 - 07:13 AM.
Crossbones+ - Reputation: 7003
Posted 09 October 2012 - 08:47 AM
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.
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.
If you use glTranslate and glRotate[...]
Edited by Cornstalks, 09 October 2012 - 08:51 AM.