Размещение объекта вокруг точки вращения - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть два объекта, 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.

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

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

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

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

Буду признателен за любую помощь!

1 Ответ

2 голосов
/ 16 декабря 2011

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

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

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

Таким образом, позиция объекта 2 должна быть

object2.x = object1.x + D * cos(A)
object2.y = object1.y + D * sin(A)
...