Динамическое вычисление точек круга в игре для Android

1

Если мои координаты X увеличиваются каждый раз при рисовании кадра, какую формулу я могу использовать из математической библиотеки, чтобы координата Y перемещалась по окружности круга по кадре, создавая иллюзию орбитальный объект вокруг непрерывно движущейся центральной точки?

Я видел, что это может включать sin или cos, но я не уверен, как настроить переменные соответственно на кадр.

Большое спасибо за вашу помощь

Теги:
game-physics
circle

2 ответа

1
Лучший ответ

Вы не можете сделать полный круг, если ваша координата X увеличивается каждый раз, потому что половина времени вашей координаты X должна уменьшаться.

Для вас нужны полярные координаты: theta для угла и r для радиуса. Ваш r останется постоянным, и ваша тэта будет увеличиваться непрерывно. Затем ваши x и y:

x = r * cos(theta)
y = r * sin(theta)
  • 0
    Большое спасибо, что нашли время ответить на мой вопрос. Применение математики в игровой среде делает всю тему намного интереснее, они должны использовать это при обучении детей!
  • 0
    Работая прекрасно теперь благодаря этой формуле.
0

let ox,oy - начало вашего круга, а px,py - точка на краю круга с радиусом r

: (px-ox)^2 + (py-oy)^2 = r^2 определение круга

решить для py:

(py-oy)^2 = r^2 - (px-ox)^2

(py-oy) = sqrt(r^2 - (px-ox)^2)

py = sqrt(r^2 - (px-ox)^2) + oy < ---

Так как вы увеличиваете px ваши фреймы, вы можете найти соответствующий py путем пересчета указанной выше формулы.

  • 0
    Большое спасибо. Я думаю, что для того, чтобы игра была максимально гладкой, я вычислю точки для каждого кадра и сохраню их в массиве, который можно просто прочитать по индексу, который увеличивается на каждый цикл. Для динамического вычисления я буду пересчитывать эти значения, если вызывается метод surfaceChanged. Спасибо большое за помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню