2010-08-05 6 views
1

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

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

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

ответ

1

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

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

x = r * cos(theta) 
y = r * sin(theta) 
+0

Большое спасибо за то, что нашли время, чтобы ответить на мой вопрос. Применение математики в игровой среде делает эту тему более интересной, они должны использовать ее при обучении детей! – ComethTheNerd

+0

Прекрасно работает теперь благодаря этой формуле. – ComethTheNerd

0

пусть 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 путем перерасчета указанной выше формуле.

+0

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