Я хочу перемістити один об’єкт (крапку) круговою доріжкою. Як я повинен змінити координати X і Y для цього?
Я хочу перемістити один об’єкт (крапку) круговою доріжкою. Як я повинен змінити координати X і Y для цього?
Відповіді:
Це можна зробити, використовуючи просту математику:
X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;
(originX, originY) - центр вашого кола. радіус - його радіус. Це воно.
Це працює, тому що синус і косинус математично пов'язані з одиничним колом .
Кредит зображення: LucasVB (власна робота) [Публічне надбання], через Wikimedia Commons . (Зменшено до 70%.)
Можна використовувати параметричне рівняння, позначене Кром. Щоб зрозуміти, чому ми використовували цю формулу, ви повинні зрозуміти, що таке рівняння. Це рівняння виводиться з параметричного рівняння кола .
Враховуючи, що коло намальовано центром на початку (O), як показано на схемі нижче
Якщо візьмемо точку "р" на окружності кола, маючи радіус r.
Нехай кут, зроблений ОП (Походження до р), дорівнює θ. Нехай відстань p від осі x дорівнює y Нехай відстань p від осі y буде x
Використовуючи наведені вище припущення, ми отримуємо трикутник, як показано нижче:
Тепер ми знаємо, що cos θ = основа / гіпотенуза і sin θ = перпендикуляр / гіпотенуза
що дає нам cos θ = x / r та sin θ = y / r
:: x = r * cos θ і y = r * sin θ
Але якщо коло знаходиться не в початку, а скоріше в (a, b), тоді можна сказати, що центр кола зміщений
одиниці по осі x
одиниці b
осі y
Отож для такого кола ми можемо відповідно змінити параметричне рівняння, додавши зсув по осі x і y, даючи нам такі рівняння:
x = a + (r * cos θ)
y = b + (r * sin θ)
Де a & b - координати x, y центру кола.
Отже, ми знайшли x і y координати точки на окружності кола з радіусом r
Є ще одна хитрість, де ви використовуєте формули sin (x + a) і cos (x + a), і це дозволяє вам обчислити sin (a) і cos (a) - істота, кут, під яким ви хочете рухатись з вашої поточної позиції - лише один раз і виконайте просто множення та доповнення на кожному кроці.
sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Звичайно, це передбачає постійну кутову швидкість.
Однак остерігайтеся обмеженої арифметичної точності. Раніше я помічав, що "круговий" рух реалізовувався таким чином, що малював би спіраль у результаті періодичного округлення вниз, повторюваного з часом. Можливо, потрібно буде скинути позицію до (x0, y0) після кожного перевороту.