8

Publiqué this question en mathoverflow pero también quiero saber su opinión al respecto. Lo que quiero hacer es dibujar una curva que esté siempre a cierta distancia de la normal a la superficie de una curva dada. Conozco la fórmula de la curva dada (una spline cúbica por partes). El problema parece ser cuando la distancia de desviación es mayor que el radio de la curva: los puntos se mezclan. ¿Alguien ha encontrado tal problema? ¿Hay una buena solución?Una forma de dibujar la curva equidistante

Gracias por cualquier idea,

Iulian

TARDE: El problema está perfectamente descrita a continuación por el Sr. Asistente.

+1

independiente del idioma, mi trasero! esas palabras parecen inglesas, ¡pero no se analizan! – bdares

Respuesta

3

EDITAR: NOTA: Esta respuesta no se trata de evitar el ajuste de las esquinas (que es una característica de las curvas estrictamente equidistantes).

Según Wikipedia,

la curva en un desplazamiento a partir de una curva de Bézier dado, a menudo llamado una curva de desviación fija (mentir "paralelo" a la curva original, como el desplazamiento entre los carriles en un ferrocarril pista), no puede ser formado exactamente por una curva de Bézier (excepto en algunos casos triviales). Sin embargo, hay métodos heurísticos que generalmente dan una aproximación adecuada para propósitos prácticos.

lo tanto, no son métodos heurísticos que usted tiene que utilizar para obtener una aproximación . Hay un documento académico llamado Comparing offset curve approximation methods que incluye una comparación de 9 algoritmos.

Si desea omitir la investigación y obtener una solución, eche un vistazo a este blog post describing an implementation of De Casteljau's algorithm. EDITAR: Tengo que admitir que no estoy seguro de cómo se comporta esta implementación con cambios bruscos.

+0

Muy buenos consejos. Le echaré un vistazo. ¡Gracias! – INS

+0

Solo escaneé brevemente el documento en PDF, pero no parece abordar el problema que ilustré. ¿Soy incorrecto? –

+2

@Mr. Asistente: Después de leer esta pregunta y la de Math Overflow, entendí mal el problema. Pensé que OP estaba tratando de obtener exactamente la curva que describe, produciendo exactamente el efecto ("problema") que describes, pero que su algoritmo de alguna manera estaba fallando. ** @ Iulian: su definición de la curva de compensación en sí misma causa el plegado (como señala el Sr. Wizard) ** – dancek

7

Creo que tendrá problemas con su definición: "... dibuje una curva que esté siempre a cierta distancia de la normal a la superficie de una curva determinada".

Si dibuja una serie de líneas dentro de una curva cóncava, en algún punto la línea se plegará sobre sí misma, creando finalmente una inversión geométrica.

aplicado a una elipse, por ejemplo:

enter image description here

+0

¡Exactamente este es el problema! ¿Alguna idea de cómo superar esto? – INS

+1

@Iulian, bueno, para empezar, tendrá que usar una definición diferente. Contempla el problema ilustrado arriba, y luego decide cómo te gustaría manejar la situación. Solo entonces puede ser implementado.Por ejemplo, considere el tercer objeto desde la parte superior en mi ilustración; ¿Aceptarías el borde del área blanca interior como tu nueva curva, aunque en los extremos esté más lejos de la elipse de lo especificado? –

+0

@Mr. Iba a publicar lo mismo con curvas Bezier. Me has vencido esta vez :) –

Cuestiones relacionadas