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

Started by
3 comments, last by freakchild 11 years, 6 months ago
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 change. 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 hope I explained this well.
Advertisement
This is basic Pre-Algebra geometry, and a quick google would have set you up, but I guess I'll tell you:
In a geometric rotation, every point is multiplied by negative one. Example:
A(1,1)
A(1 * -1, 1 * -1)
New A(-1,-1)
So you essentially multiply the x and y coordinate of every point in your shape by negative 1. It can be expressed in a matrix by:
A[2,3]
A[-2,-3]
EDIT:
Also, just set it up so whatever you do to one object you do to the other, this is called Baking if I'm correct. Better suited for the Math forum however.

I'm a game programmer and computer science ninja !

Here's my 2D RPG-Ish Platformer Programmed in Python + Pygame, with a Custom Level Editor and Rendering System!

Here's my Custom IDE / Debugger Programmed in Pure Python and Designed from the Ground Up for Programming Education!

Want to ask about Python, Flask, wxPython, Pygame, C++, HTML5, CSS3, Javascript, jQuery, C++, Vimscript, SFML 1.6 / 2.0, or anything else? Recruiting for a game development team and need a passionate programmer? Just want to talk about programming? Email me here:

hobohm.business@gmail.com

or Personal-Message me on here !


This is basic Pre-Algebra geometry, and a quick google would have set you up, but I guess I'll tell you:
In a geometric rotation, every point is multiplied by negative one. Example:
A(1,1)
A(1 * -1, 1 * -1)
New A(-1,-1)
So you essentially multiply the x and y coordinate of every point in your shape by negative 1. It can be expressed in a matrix by:
A[2,3]
A[-2,-3]
EDIT:
Also, just set it up so whatever you do to one object you do to the other, this is called Baking if I'm correct. Better suited for the Math forum however.


Haha, I wish it were that simple. I guess I'll post this on the math bored.


Thanks for trying though.
Can you explain more about the setup you have for these two objects:
What part of the objects are you referencing in regard to reporting their position?
How are you rotating the first object?

You said that you're rotating the one object about the origin, then moving it in to place, then rotating the second object (presumably by the same rotation) and then trying to move it in to place.

It seems to me that it should just be a simple case of rotating both objects at the same time around the same point from their original position, then you translate both by their same factor of movement.

If this won't work then you are going to have to rotate each object individually, then move the first object in to position, calculate the respective positioning of the second object based on the rotation, and then move the second object in to place.

If you can explain how you want to rotate the objects then I might be able to help with working out the appropriate formula.
Not sure I understand you fully, or at least the subject text reads a little bit of a different problem to the body. Assuming for the body though...

Rotate the first object and translate it into position. For the second object, rotate it around it's local origin (no translation) first then rotate the position and the offset translation (not the object itself, but the (x+2,y+3)) and then apply the result of that to the second object as a translation.

This topic is closed to new replies.

Advertisement