Вычислить правый / левый вектор 2d на основе вращения объекта [дубликат]

Мне пришлось импортировать мой пакет R в студию Android. Для ex: import com.example.<package name>.R

1
задан reflexdev 2 May 2017 в 22:48
поделиться

2 ответа

самым простым способом в 2D является угол «ang» и расстояние «d», а ваша начальная точка «x» и «y»:

x1 = x + cos(ang) * distance;
y1 = y + sin(ang) * distance;

В 2D вращение для любого объект может быть просто сохранен как одно значение, ang.

, используя cos для x и sin для y, является «стандартным» способом, который почти каждый делает. cos (ang) и sin (ang) вычерчивают круг с увеличением угла. ang = 0 точек прямо вдоль оси x здесь, и по мере увеличения угла он вращается против часовой стрелки (т.е. на 90 градусов он направлен вверх). Если вы меняете значения cos и sin для x и y, вы получаете ang = 0, направленный вдоль оси y и вращение по часовой стрелке с увеличением ang (поскольку это зеркальное изображение), что на самом деле может быть более удобным для игры, поскольку y-axis часто является «прямым» направлением, и вам может понравиться, что увеличивающиеся углы поворота направо.

x1 = x + sin(ang) * distance;
y1 = y + cos(ang) * distance;

Позже вы можете попасть в векторы и матчи, которые делают то же самое, но в более гибкой но cos / sin отлично подходят для игры в 2D-игре. В 3D-игре использование cos и sin для ротации начинает разрушаться при определенных обстоятельствах, и вы начинаете действительно извлекать выгоду из изучения матричных подходов.

5
ответ дан Jason Lang 19 August 2018 в 19:23
поделиться
  • 1
    Спасибо! У меня работает мой компас! :) – reflexdev 3 May 2017 в 01:08

Расстояние между (4,4) и (16,16) на самом деле не является 12. Используя теорему пифагора, расстояние фактически составляет sqrt (12 ^ 2 + 12 ^ 2), что составляет 16,97. Чтобы получить точки вдоль линии, вы хотите использовать синус и косинус. Например. Если вы хотите вычислить точку на полпути вдоль линии, координата x будет cos (45) (16.97 / 2), а y будет sin (45) (16.97 / 2). Это будет работать с другими углами, кроме 45 градусов.

2
ответ дан Francesco 19 August 2018 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: