Creo que con los dos puntos más cercanos es posible que aún tenga torceduras extrañas ... Un ejemplo extremo: supongamos que ambos círculos tienen la R = 1. Si el centro del primer círculo es O, y está sentado en el plano XY, y el centro del segundo círculo está sentado en X = 1, Y = 0, Z = 0.01, y está ligeramente inclinado en la dirección creciente de X, el más cercano los puntos en los dos círculos seguramente obtendrán el "giro extraño" que estás tratando de evitar. Dado que los puntos más cercanos no te darán el giro extraño en caso de que el segundo círculo esté en X = 0, Y = 0, Z = 0.01 y esté igualmente inclinado, entonces en algún momento las afirmaciones "se alinearán con dos puntos más cercanos en dos círculos" y "no se han visto torceduras extrañas" ya no se corresponden entre sí.
Suponiendo que esto puede ocurrir dentro de la restricción de NURBS, aquí hay otra idea. Al principio, tome los tres puntos en la curva NURBS: dos que pertenecen a los centros de sus círculos, y el tercero exactamente entremedio. Dibuja un avión entre los tres. Este plano cruzará los dos círculos en 4 puntos. Dos de estos puntos estarán en el mismo "lado" de la línea que conecta los centros de los círculos: son sus puntos de alineación.
Para los siguientes puntos de alineación, tomará el punto de alineación del "círculo anterior" y dibujará el plano entre el centro del "círculo anterior", este punto de alineación y el centro del "círculo nuevo". De esto obtienes el "siguiente punto de alineación" basado en la intersección con el otro círculo.
Siguiente paso - "círculo anterior" = "círculo nuevo", y el "círculo nuevo" - su próximo de acuerdo con la curva NURBS.
Si se cruzan los radios desde los centros de los círculos a los puntos de alineación seleccionados, sabrá que la imagen se verá un poco fea: ese es el escenario donde con el algoritmo de "punto más cercano" aún se torcería .
Creo que las coordenadas del punto en el círculo que es intersección con el plano que pasa por su centro deberían ser fáciles de calcular (es un punto en la línea hecha por la intersección de los dos planos, uno del círculo y el plano objetivo, a la distancia R del centro).
No tengo la prueba rigurosa para afirmar completamente o negar lo anterior, pero espero que ayude en absoluto, y creo que debería ser lo suficientemente rápido para verificar, en comparación con el cálculo de los puntos del armario en los dos círculos. . (Si hay algún defecto en mi lógica, las correcciones en los comentarios son bienvenidas).
círculos en 3D? : O ¿No te refieres a esferas? – cwap
@Meeh: No necesitas una normal para las esferas. –
Tienes razón. Necesito repasar mis cálculos :) – cwap