Короткий вопрос: Для точки P и отрезка L, как мне найти точку (или точки) на L, которые находятся точно на расстоянии X от P, если она гарантировала, что такая точка существует?
Более длинный способ задать этот вопрос с изображением.Учитывая два круга, один статический и один динамический, если вы перемещаете динамический к статическому по прямой линии, довольно легко определить точку контакта (см. 1, зеленая точка).
Теперь, если вы перемещаете динамический круг к статическому кругу под углом, определить точку контакта гораздо сложнее (см. 2, фиолетовая точка).Эту часть я уже сделал.То, что я хочу сделать, это после определения точки контакта уменьшить угол и определить новую точку контакта (см. 3, 4, красная точка).
В # 4 вы можете увидеть уголуменьшается менее чем наполовину, и новая точка контакта находится на полпути между прямой и исходной точкой.В # 7 вы можете видеть, что угол разделен пополам, но новая точка контакта перемещается намного дальше, чем на полпути назад, к точке прямой.
В моем случаеЯ всегда хочу уменьшить угол до 5/6 от его первоначального значения, но исходный угол и расстояние между кругами являются переменными.Круги все одинакового радиуса.Фактические данные, которые мне нужны после уменьшения угла, - это вектор между новым центром динамического круга и статическим кругом, то есть синей линией в 3, 4, 6 и 7, если это облегчает вычисления.
Пока что я знаю, что должен двигать динамический круг вдоль линии, центром которой является фиолетовый круг, к центру статического круга.Затем круг должен двигаться прямо назад к исходному положению динамического круга.Сложнее всего точно знать, как далеко он должен двигаться назад, чтобы он просто касался другого круга.