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

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

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

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


person Darius    schedule 05.08.2010    source источник


Ответы (2)


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

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

x = r * cos(theta)
y = r * sin(theta)
person Ned Batchelder    schedule 05.08.2010
comment
Большое спасибо, что нашли время ответить на мой вопрос. Применение математики в игровой среде делает всю тему намного интереснее, этим стоит пользоваться при обучении малышей! - person Darius; 05.08.2010

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

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

решить для ру:

(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, пересчитав приведенную выше формулу.

person corsiKa    schedule 05.08.2010
comment
Большое спасибо. Я думаю, чтобы игра была как можно более плавной, я буду вычислять очки для каждого кадра и хранить их в массиве, который можно просто прочитать по индексу, который увеличивается при каждом цикле. Чтобы сделать этот расчет динамическим, я буду пересчитывать эти значения, если вызывается метод surfaceChanged. Большое спасибо за Вашу помощь - person Darius; 05.08.2010