2011-12-15 6 views
0

У меня есть два объекта, object1 и object2. object1 вращается вокруг своего центра, и вокруг него будет установлено object2. Проблема заключается в правильном позиционировании object2; это не на 100% точно.Размещение объекта вокруг вращающейся точки

Вот мой код:

angle = atan2(
    cEnemy->position.y - (float) position.y, 
    cEnemy->position.x - (float) position.x)/3.14159265f * 180); 

position.x и position.y представляют object1 «s положение.

Это мой угол там, для которого object1 использует для вращения с. Теперь я застрял в том, как идти о позиционировании object2.

Я полагаю, что мне нужно сначала получить центральные точки object1 которых равен:

object2.x = (position.x + widthOfObject1/2); 
object2.y = (position.y + heightOfObject1/2); 

Но тогда я просто не уверен в том, что, делать с углом, который object1 столкнется, и как используйте это для правильной позиции object2. Я абсолютно уверен, что мне нужно использовать sin или cos здесь, но я не уверен, были. Моя идея состоит в том, чтобы позиционировать object2 так, чтобы неважно, какой угол он находится, object2 также будет на переднем крае object1 небольшим отрывом.

Любая помощь будет оценена!

+0

Ну я не собирался до последнего пункта. "position object2, чтобы не иметь значения, какой угол он находится, object2 также будет находиться перед объектом1 с небольшим отрывом" .... –

ответ

2

Похоже, что вы хотите сделать, это object2 находится на фиксированном расстоянии D от позиции P и вы хотите, чтобы повернуть его вокруг P углом

Так единичный вектор вдоль является [ cos(A) , sin(A) ]

поэтому вектор вдоль величины D является [ D cos(A) , D sin(A) ]

Так положение объекта 2 должно быть

object2.x = object1.x + D * cos(A) 
object2.y = object1.y + D * sin(A) 
Смежные вопросы