Конкретный равносторонний треугольник с двумя точками в 3D

Допустим, у меня есть две точки: А "=" ( Икс 0 , у 0 , г 0 ) и Б "=" ( Икс 1 , у 1 , г 1 ) .

Как найти третью точку С "=" ( Икс 2 , у 2 , г 2 ) такой, что:
а) А , Б & С образуют равносторонний треугольник
б) значение г 2 это самое высокое, что может быть

Большое спасибо за ваше время :)

Я пробовал несколько примеров с заданными точками, формируя нелинейные системы уравнений. А С , Б С , Д С ( Д будучи средней точкой А Б ), а затем выполняя некоторые частные производные на этих результатах. Я получил то, что искал для какого-то конкретного примера (где г 0 "=" г 1 "=" 0 ), но я как бы делаю это бездумно, пока не получу то, что хочу, и это не сработало для меня для более сложных примеров (например, когда г 0 г 1 ).

Добро пожаловать в МСЭ. Используйте форматирование MathJax для математических выражений. См. math.meta.stackexchange.com/questions/5020/…
спасибо я исправил
Что С вы ожидаете получить, когда г 0 г 1 но Икс 0 "=" Икс 1 и у 0 "=" у 1 ? В этом случае г 2 "=" 1 2 ( г 0 + г 1 ) , но что насчет Икс 2 и у 2 ?
ха-ха да действительно хороший вопрос. В моем сценарии этого на самом деле никогда не произойдет, две точки никогда не будут одинаковыми. Икс и у
но да, даже если этого не произойдет, если проще включить его, мы могли бы просто сказать, что любое правильное Икс 2 / у 2 комбинация подойдет
У вас есть две пересекающиеся сферы - в зависимости от расстояния между A и B. Затем вы можете использовать производные для решения уравнения для максимума z.

Ответы (1)

Намекать.

введите описание изображения здесь

Оставив в стороне частные случаи, пусть А г > Б г . Рассмотрим точку Д "=" ( Икс 1 , у 1 , г 0 ) . А Д Б определяет плоскость, в которой находится искомая точка С находился бы. Используйте векторное произведение А Б и Д Б вращать А к 60 вокруг Б .


Редактировать

Например, с точки зрения мощного языка описательной векторной графики Asymptote это было бы просто

triple C=rotate(60,B,B+cross(A-B,D-B))*A;
большое спасибо! :)
Не могли бы вы дать мне немного больше информации о том, как привести последнее предложение в действие? Большое спасибо
@MXu: см. обновленный ответ.
Извините, что продолжаю, но я совершенно не знаком с этим языком программирования :( Не могли бы вы превратить это в код Python или просто в формулу? Еще раз большое спасибо за всю помощь :)
Используя формулу вращения Родригеса ( en.wikipedia.org/wiki/Rodrigues%27_rotation_formula ), k будет вектором единичного пересечения (AB, DB), v вектором AB и θ = 60 градусов?
@MXu: в данном случае это точно к это единица А Б × Д Б вектор, в это А Б вектор и θ "=" 60 .
Что ж, большое вам спасибо за все, за помощь мне и, я думаю, многим другим, с нашими проблемами. Моя область исследований сейчас не очень популярна, но вы вдохновили меня попробовать сделать то же самое. Хорошего дня/ночи!
@MXu: Спасибо. На всякий случай: формула вращения Родригеса дает повернутый вектор в р о т . Расположение точки С "=" Б + в р о т . И если вы собираетесь углубиться в 3D/математику, подумайте о том, чтобы попробовать Asymptoteвместе с TeXLive(если у вас его еще нет).