Задать вопрос
@anboo

Как исключить столкновение двух окружностей?

У меня есть две окружности с одинаковым радиусом, которые пересекаются между собой, мне нужно отодвинуть одну из них на некие значения X и Y, чтобы они пересекались только в одной точке (чтобы друг на друге не лежали больше).
Как рассчитать X и Y, на которые надо отодвинуть одну из окружностей?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
"Отодвинуть" звучит как сдвинуть так, чтобы центры остались на той же прямой. Это было бы
логично.
Уравнение прямой y = kx + b строится по двум точкам. Для простоты перенесем центр одной из окружностей в начало координат, тогда уравнение будет y = kx.
Из условия расстояния строим ещё одно уравнение:
y^2 + x^2 = 4r^2
Решаем систему из двух уравнений, получаем x и y, затем переносим центры обратно.

Отдельно рассмотреть случай, когда центры совпадают, и выбрать тривиальную прямую y = 0, например.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Есть много вариантов как это можно сделать. Один из них:
1) Переводите обычные декартовы координаты в полярные. Тогда центр второй относительно центра первой будет на расстоянии
r=R1+R2
2) Далее или выбираете фи произвольно, или же проходите с неким шагов весь круг, рассчитывая расстояние между центром второй окружности сейчас и центром второй окружности после двигания. Нужно выбрать минимум функции, тогда движение будет минимальным.
3) Перевести полярные обратно в декартовы
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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