Triángulo equilátero específico dados dos puntos en 3D

Digamos que tengo dos puntos: A = ( X 0 , y 0 , z 0 ) y B = ( X 1 , y 1 , z 1 ) .

¿Cómo puedo encontrar un tercer punto? C = ( X 2 , y 2 , z 2 ) tal que:
a) A , B & C forman un triángulo equilátero
b) el valor de z 2 es lo más alto que puede ser

Muchas gracias por su tiempo :)

He probado algunos ejemplos con puntos preestablecidos, formando sistemas de ecuaciones no lineales A C , B C , D C ( D siendo el punto medio de A B ) y luego haciendo algunas derivadas parciales sobre estos resultados. Obtuve lo que estaba buscando para un ejemplo específico (donde z 0 = z 1 = 0 ) pero lo estoy haciendo sin cabeza hasta que obtengo lo que quiero y eso no me ha funcionado para ejemplos más complicados (como cuando z 0 z 1 ).

Bienvenido a MSE. Utilice el formato MathJax para expresiones matemáticas. Consulte math.meta.stackexchange.com/questions/5020/…
gracias lo arreglé
Qué C esperas llegar cuando z 0 z 1 pero X 0 = X 1 y y 0 = y 1 ? En este caso z 2 = 1 2 ( z 0 + z 1 ) , pero que pasa X 2 y y 2 ?
jaja si muy buena pregunta. En mi escenario, esto en realidad nunca sucederá, dos puntos nunca tendrán el mismo X y y
pero sí, aunque no sucederá, si es más fácil incluirlo, podríamos decir que cualquier correcto X 2 / y 2 combinación haría
Tienes dos esferas que se intersecan, según la distancia entre A y B. Entonces podrías usar derivadas para resolver la ecuación para z máximo.

Respuestas (1)

Pista.

ingrese la descripción de la imagen aquí

Dejando a un lado los casos especiales, dejemos A z > B z . Considere el punto D = ( X 1 , y 1 , z 0 ) . A D B define el plano donde se encuentra el punto buscado C estaría ubicado. Utilice el producto cruzado de A B y D B rotar A por 60 alrededor B .


Editar

Por ejemplo, en términos de un potente lenguaje de gráficos vectoriales descriptivos Asymptote sería simplemente

triple C=rotate(60,B,B+cross(A-B,D-B))*A;
¡muchas gracias! :)
¿Te importaría darme un poco más de información sobre cómo poner en práctica la última oración? Muchas gracias
@MXu: ver respuesta actualizada.
Lamento presionarlo más, pero no estoy muy familiarizado con este lenguaje de programación :( ¿Le importaría convertir esto en código python o simplemente en una fórmula? Una vez más, muchas gracias por toda la ayuda :)
Usando la fórmula de rotación de Rodrigues ( en.wikipedia.org/wiki/Rodrigues%27_rotation_formula ) k sería el vector unitario cruzado (AB, DB), v el vector AB y θ = 60 grados?
@MXu: Eso es exactamente correcto, en este caso k es la unidad A B × D B vector, v es el A B vector y θ = 60 .
Bueno, muchas gracias por todo, por ayudarme, y supongo que a muchos más, con nuestros problemas. Mi campo de estudio no es muy popular en este momento, pero me has inspirado para intentar hacer lo mismo. ¡Que tengas un gran día/noche!
@MXu: Gracias. Por si acaso: la fórmula de rotación de Rodrigues da el vector rotado v r o t . La ubicación del punto C = B + v r o t . Y si va a profundizar en 3D/matemáticas, considere darle una Asymptoteoportunidad, junto con TeXLive(si aún no lo tiene).