Перемещение объекта по круговой траектории


26

Я хочу переместить один объект (точку) по круговой траектории. Как мне изменить координаты X и Y, чтобы добиться этого?

Ответы:


54

Вы можете сделать это, используя простую математику:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX, originY) - центр вашего круга. радиус это его радиус. Вот и все.

Это работает, потому что синус и косинус математически связаны с единичным кругом .

Отношение синуса и косинуса к единичному кругу
Изображение предоставлено: LucasVB (собственная работа) [Public domain], через Wikimedia Commons . (Уменьшено до 70%.)


Что если это овал? Т.е. не установлен радиус.
— тест

2
@test: Если овал ориентирован на X или Y, вы можете умножить соответствующую позицию оси на дополнительный коэффициент. Если вам нужно больше деталей, вы должны задать отдельный вопрос.
— Кромстер говорит, что поддерживает Монику

@Anko: Я не думаю, что анимация объясняет это лучше, но пусть это будет, для тех, кто в этом нуждается. Преобразован в CW.
— Кромстер говорит, что поддерживает Монику

@ Кромстер, как насчет достижения того же результата в трехмерном пространстве?
— Томас

14

Вы можете использовать параметрическое уравнение, как отмечено Krom. Чтобы понять, почему мы использовали эту формулу, вы должны понять, что такое уравнение. Это уравнение получено из параметрического уравнения круга .

Учитывая, что круг нарисован с центром в начале координат (O), как показано на схеме ниже Круг

Если взять точку «р» на окружности окружности, имеющую радиус r.

Пусть угол, заданный OP (Origin to p), равен θ. Пусть расстояние p от оси x равно y Пусть расстояние p от оси y равно x

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

Теперь мы знаем, что cosθ = основание / гипотенуза и sinθ = перпендикулярно / гипотенуза

что дает нам cosθ = x / r и sinθ = y / r

:: x = r * cos θ и y = r * sin θ

Но если круг не в начале координат, а в точке (a, b), то можно сказать, что центр круга смещен

a единицы по оси x
b единицы по оси y
Итак, для такого круга мы можем соответствующим образом изменить параметрическое уравнение, добавив сдвиг по оси x и y, дав нам следующие уравнения:

x = a + (r * cos θ)
y = b + (r * sinθ)


Где a & b - координаты x, y центра круга.

Следовательно, мы нашли координаты x и y точки на окружности окружности с радиусом r


2
Спасибо, действительно хороший и краткий ответ на эту проблему, пальцы вверх
— Ali.Ghodrat

5

Есть еще одна хитрость, где вы используете формулы sin (x + a) и cos (x + a), и это позволяет вам вычислять sin (a) и cos (a) - это угол, под которым вы хотите двигаться с вашей текущей позиции - только один раз и делайте просто умножение и сложение на каждом шаге.

sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.

Конечно, это предполагает постоянную угловую скорость.

Остерегайтесь ограниченной арифметической точности, хотя. Я наблюдал в прошлом «круговое» движение, реализованное таким образом, что рисовало бы спираль в результате случайного округления, повторяющегося со временем. Может потребоваться сброс положения на (x0, y0) после каждого оборота.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.