2008-10-24 25 views

Respuesta

6

Su mejor enfoque podría ser dividir su spline en segmentos de línea individuales y probar cada segmento de línea para la intersección con la línea. El estriado puede intersectar la línea en más de un punto, por lo que también tendrá que decidir cuál de ellos está interesado en

+0

Acepto, este es el método generalmente recomendado. Por lo general, es más eficiente si lo hace de forma iterativa, refinando los segmentos de línea donde encuentra una intersección hasta que obtenga la resolución deseada. – Kena

7

Una aproximación matemática pura:.

  • transformar el estriado y la línea de modo que la línea se encuentra en el eje X.
  • Calcule los puntos en la spline donde Y = 0 (depende del orden de la spline).
  • Transfiera estos puntos a su sistema cordinate original.

Si esta es la forma en que vas, puedo encontrar las fórmulas necesarias.

+0

Me gusta el enfoque, pero ¿cómo se resuelve cuando Y = 0 de la spline? ¿Hay alguna otra manera que no sea evaluar los segmentos spline e intentar aproximarlos? – Herms

+0

Según el orden de la spline, existen soluciones existentes para las ecuaciones spline (al menos hasta las splines cúbicas). Las fórmulas tienden a ser realmente incómodas y no se garantiza que sean bajas en errores numéricos. Como dije: un enfoque matemático puro. –

7

El algoritmo más eficiente que he escuchado se llama recorte de Bezier.

Aquí hay un book chapter on curve and spline intersection (pdf).

+1

He tenido éxito implementando una solución desde esta fuente, específicamente mirando la sección 7.3, ya que el hallazgo de raíz polinomial para las funciones bezier y B Spline es fácil. –

Cuestiones relacionadas