Nik_o_lay
@Nik_o_lay
Изучаю фронтенд

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

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

Как определить направление (по часовой стрелке или против) рисования кратчайшей дуги?
  • Вопрос задан
  • 213 просмотров
Решения вопроса 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) и понятно что без разницы по часовой или против часовой стрелке двигаться ибо дуги будут одинаковы.

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

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

Войти через центр авторизации
Похожие вопросы