Задать вопрос
Nik_o_lay
@Nik_o_lay
Изучаю фронтенд

Как определить направление рисования дуги?

Есть окружность с радиусом R.
Есть стартовая точка на окружности с координатами x0, y0 и финишная точка с координатами x1, y1.

Как определить направление (по часовой стрелке или против) рисования кратчайшей дуги?
  • Вопрос задан
  • 324 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Математика для анализа данных
    6 месяцев
    Далее
  • karpov.courses
    Математика для Data Science
    1 месяц
    Далее
  • Фоксфорд
    Алгоритмика и основы написания кода. 3–5 классы. (в записи)
    1 месяц
    Далее
Решения вопроса 1
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Воспользуйтесь векторным произведением векторов из центра окружности на две точки. Оно вам даст положительное значение, если от первого ко второму вектору надо идти против часовой стрелки и отрицательное - наоборот. Ноль, если вектора лежат на одной прямой с центром окружности.

Форомула будет (x0 - xr)(y1-yr) - (x1-xr)(y0-yr), где xr, yr - центр окружности.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
suffix_ixbt
@suffix_ixbt
https://www.babai.ru/
Помещаем окружность в систему координат так чтобы центр был в точке (0, 0), а первая точка была на оси Х.

Тогда координаты первой точки будут (R, 0).

Очевидно и тривиально что:

1.
Если у второй точки y1 > 0 то двигаться из первой точки против часовой стрелки для кратчайшей дуги.
2.
Если у второй точки у1 < 0 то двигаться из первой точки надо по часовой стрелке для кратчайшей дуги
3.
Если y1 = 0, то так как это отличная от первой точка то её координаты будут (-R, 0) и понятно что без разницы по часовой или против часовой стрелке двигаться ибо дуги будут одинаковы.

Дальнейший вывод уж сами сделайте :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы