Мне пришлось импортировать мой пакет R
в студию Android. Для ex: import com.example.<package name>.R
самым простым способом в 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 для ротации начинает разрушаться при определенных обстоятельствах, и вы начинаете действительно извлекать выгоду из изучения матричных подходов.
Расстояние между (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 градусов.