Jump to content

  • Log In with Google      Sign In   
  • Create Account


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


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 GDsnakes   Members   -  Reputation: 145

Like
0Likes
Like

Posted 09 October 2012 - 06:22 AM

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.

Sponsor:

#2 Ashaman73   Crossbones+   -  Reputation: 6982

Like
0Likes
Like

Posted 09 October 2012 - 06:28 AM

Double post...

#3 Erik Rufelt   Crossbones+   -  Reputation: 3209

Like
0Likes
Like

Posted 09 October 2012 - 06:37 AM

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.

#4 serumas   Members   -  Reputation: 708

Like
0Likes
Like

Posted 09 October 2012 - 07:11 AM

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, 09 October 2012 - 07:13 AM.


#5 Arthur Souza   Members   -  Reputation: 1417

Like
0Likes
Like

Posted 09 October 2012 - 08:39 AM

Try posting an example, I can't see where this is going wrong.

A.

Lotus - Action RPG In development http://www.gamedev.n...die-rpg-engine/ |
Personal blog In Portuguese: lotuzgames.wordpress.com |


#6 Cornstalks   Crossbones+   -  Reputation: 6974

Like
1Likes
Like

Posted 09 October 2012 - 08:47 AM

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, 09 October 2012 - 08:51 AM.

[ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS