Articulo de referencia

Curva de Bézier compuesta

Béziergon – El béziergon rojo pasa por los vértices azules; los puntos verdes son puntos de control que determinan la forma de las curvas de Bézier que los conectan. En modelado...

Béziergon – El béziergon rojo pasa por los vértices azules; los puntos verdes son puntos de control que determinan la forma de las curvas de Bézier que los conectan.

En modelado geométrico y en gráficos por computadora , una curva de Bézier compuesta o spline de Bézier es un spline hecho de curvas de Bézier que es al menosdo0{\displaystyle C^{0}}continua . En otras palabras, una curva de Bézier compuesta es una serie de curvas de Bézier unidas extremo con extremo, donde el último punto de una curva coincide con el punto de inicio de la siguiente curva. Dependiendo de la aplicación, se pueden requerir suavidades adicionales (comodo1{\displaystyle C^{1}}odo2{\displaystyle C^{2}}Se puede añadir continuidad). [ 1 ]

Quizás el uso más común de las curvas de Bézier compuestas sea describir el contorno de cada letra en un archivo PostScript o PDF . Dichos contornos se componen de un beziergón para letras abiertas o de varios beziergones para letras cerradas. Los sistemas modernos de gráficos vectoriales y fuentes tipográficas como PostScript , Asymptote , Metafont , OpenType y SVG utilizan curvas de Bézier compuestas, formadas por curvas de Bézier cúbicas (curvas de tercer orden), para dibujar formas curvas.

Terminología

Función sinc aproximada mediante una spline de Bézier suave, es decir, una serie de curvas de Bézier unidas suavemente.

Una Bézier compuesta continua también se llama polibézier , por similitud con una polilínea , pero mientras que en las polilíneas los puntos están conectados por líneas rectas, en una polibézier los puntos están conectados por curvas de Bézier. Un béziergón (también llamado bézigón ) es un camino cerrado compuesto por curvas de Bézier . Es similar a un polígono en que conecta un conjunto de vértices por líneas, pero mientras que en los polígonos los vértices están conectados por líneas rectas, en un béziergón los vértices están conectados por curvas de Bézier. [ 2 ] [ 3 ] [ 4 ] Algunos autores incluso llaman ado0{\displaystyle C^{0}}curva de Bézier compuesta una "spline de Bézier"; [ 5 ] sin embargo, otros autores utilizan este último término como sinónimo de la curva de Bézier (no compuesta), y añaden "compuesta" delante de "spline de Bézier" para denotar el caso compuesto. [ 6 ]

Unión suave

Una propiedad comúnmente deseada de las splines es que unan sus curvas individuales con un nivel específico de continuidad paramétrica o geométrica . Si bien las curvas individuales en la spline son completamentedo{\displaystyle C^{\infty }}Aunque son continuas dentro de su propio intervalo, siempre existe cierto grado de discontinuidad donde se encuentran diferentes curvas.

La curva Bézier es bastante singular en el sentido de que es una de las pocas curvas que no garantiza un grado de continuidad mayor quedo0{\displaystyle C^{0}}Sin embargo, es posible establecer puntos de control para garantizar distintos niveles de continuidad entre las uniones, aunque esto puede conllevar una pérdida de control local si la restricción es demasiado estricta para el grado dado de la curva Bézier.

Uniendo suavemente Béziers cúbicos

Dadas dos curvas de Bézier cúbicas con puntos de control[PAG0,PAG1,PAG2,PAG3]{\displaystyle [\mathbf {P} _{0},\mathbf {P} _{1},\mathbf {P} _{2},\mathbf {P} _{3}]}y[PAG3,PAG4,PAG5,PAG6]{\displaystyle [\mathbf {P} _{3},\mathbf {P} _{4},\mathbf {P} _{5},\mathbf {P} _{6}]}respectivamente, las restricciones para garantizar la continuidad enPAG3{\displaystyle \mathbf {P} _{3}}se puede definir de la siguiente manera:

  • do0/GRAMO0{\displaystyle C^{0}/G^{0}}(continuidad posicional) requiere que se encuentren en el mismo punto, lo cual hacen todos los polibéziers por definición. En este ejemplo, el punto compartido esPAG3{\displaystyle \mathbf {P} _{3}}
  • do1{\displaystyle C^{1}}(continuidad de velocidad) requiere que los puntos de control vecinos alrededor de la unión sean espejos entre sí. En otras palabras, deben seguir la restricción dePAG4=2PAG3PAG2{\displaystyle \mathbf {P} _{4}=2\mathbf {P} _{3}-\mathbf {P} _{2}}
  • GRAMO1{\displaystyle G^{1}}(continuidad tangente) requiere que los puntos de control vecinos sean colineales con la unión. Esto es menos estricto quedo1{\displaystyle C^{1}}continuidad, dejando un grado de libertad adicional que puede parametrizarse utilizando un escalarβ1{\displaystyle \beta _{1}}La restricción puede expresarse entonces mediantePAG4=PAG3+(PAG3PAG2)β1{\displaystyle \mathbf {P} _{4}=\mathbf {P} _{3}+(\mathbf {P} _{3}-\mathbf {P} _{2})\beta _{1}}

Aunque son posibles las siguientes restricciones de continuidad, rara vez se utilizan con polibéziers cúbicos, ya que otras splines como la B-spline o la β-spline [ 7 ] manejarán naturalmente restricciones más altas sin pérdida de control local.

  • do2{\displaystyle C^{2}}(continuidad de aceleración) está restringida porPAG5=PAG1+4(PAG3PAG2){\displaystyle \mathbf {P} _{5}=\mathbf {P} _{1}+4(\mathbf {P} _{3}-\mathbf {P} _{2})}Sin embargo, aplicar esta restricción a lo largo de toda una spline cúbica de Bézier provocará una pérdida en cascada del control local sobre los puntos de tangencia. La curva seguirá pasando por cada tercer punto de la spline, pero se perderá el control sobre su forma. Para logrardo2{\displaystyle C^{2}}Para lograr continuidad usando curvas cúbicas, se recomienda usar una B-spline cúbica uniforme en su lugar, ya que garantizado2{\displaystyle C^{2}}continuidad sin pérdida de control local, a costa de no tener ya la garantía de pasar por puntos específicos.
  • GRAMO2{\displaystyle G^{2}}(continuidad de curvatura) está restringida porPAG5=PAG3+(PAG3PAG2)(2β1+β12+β2/2)+(PAG1PAG2)β12{\displaystyle \mathbf {P} _{5}=\mathbf {P} _{3}+(\mathbf {P} _{3}-\mathbf {P} _{2})(2\beta _ {1}+\beta _ {1}^{2}+\beta _{2}/2)+(\mathbf {P} _{1}-\mathbf {P} _{2})\beta _{1}^{2}}, dejando dos grados de libertad en comparación condo2{\displaystyle C^{2}}, en forma de dos escalaresβ1{\displaystyle \beta _{1}}yβ2{\displaystyle \beta _{2}}. Es posible alcanzar grados más altos de continuidad geométrica, aunque se vuelven cada vez más complejos [ 8 ].
  • do3{\displaystyle C^{3}}(continuidad de sacudida) está restringida porPAG6=PAG3+(PAG3PAG0)+6(PAG1PAG2+PAG3PAG2){\displaystyle \mathbf {P} _{6}=\mathbf {P} _{3}+(\mathbf {P} _{3}-\mathbf {P} _{0})+6(\mathbf {P} _{1}-\mathbf {P} _{2}+\mathbf {P} _{3}-\mathbf {P} _{2})}Aplicar esta restricción a la spline cúbica de Bézier provocará una pérdida total del control local, ya que toda la spline queda ahora completamente restringida y definida por los puntos de control de la primera curva. De hecho, podría decirse que ya no es una spline, puesto que su forma ahora equivale a extrapolar la primera curva indefinidamente, lo que la convierte no solo endo3{\displaystyle C^{3}}continuo, perodo{\displaystyle C^{\infty }}ya que las uniones entre curvas separadas ya no existen

Aproximación de arcos circulares

En caso de que las primitivas de arco circular no sean compatibles con un entorno particular, pueden aproximarse mediante curvas de Bézier . [ 9 ] Comúnmente, se utilizan ocho segmentos cuadráticos [ 10 ] o cuatro segmentos cúbicos para aproximar un círculo. Es deseable encontrar la longitudk{\displaystyle \mathbf {k} }de puntos de control que dan como resultado el menor error de aproximación para un número dado de segmentos cúbicos.

Utilizando cuatro curvas

Considerando únicamente el arco circular unitario de 90 grados en el primer cuadrante , definimos los puntos extremos.A{\displaystyle \mathbf {A} }yB{\displaystyle \mathbf {B} }con puntos de controlA{\displaystyle \mathbf {A'} }yB{\displaystyle \mathbf {B'} }, respectivamente, como:

A=[0,1]A=[k,1]B=[1,k]B=[1,0]{\displaystyle {\begin{aligned}\mathbf {A} &=[0,1]\\\mathbf {A'} &=[\mathbf {k} ,1]\\\mathbf {B'} &=[1,\mathbf {k} ]\\\mathbf {B} &=[1,0]\\\end{aligned}}}

A partir de la definición de la curva de Bézier cúbica, tenemos:

do(t)=(1t)3A+3(1t)2tA+3(1t)t2B+t3B{\displaystyle \mathbf {C} (t)=(1-t)^{3}\mathbf {A} +3(1-t)^{2}t\mathbf {A'} +3(1-t)t^{2}\mathbf {B'} +t^{3}\mathbf {B} }

Con el puntodo(t=0,5){\displaystyle \mathbf {C} (t=0.5)}Como punto medio del arco, podemos escribir las siguientes dos ecuaciones:

do=18A+38A+38B+18B(mediante sustitución en la definición de Bézier cúbica)do=[2/2,2/2](por definición de círculo){\displaystyle {\begin{aligned}\mathbf {C} &={\frac {1}{8}}\mathbf {A} +{\frac {3}{8}}\mathbf {A'} +{\frac {3}{8}}\mathbf {B'} +{\frac {1}{8}}\mathbf {B} &{\text{(por sustitución en Bézier cúbico definición)}}\\\mathbf {C} &=[{\sqrt {2}}/2,{\sqrt {2}}/2]&{\text{(por la definición de un círculo)}}\end{aligned}}}

Resolviendo estas ecuaciones para la coordenada x (e idénticamente para la coordenada y) se obtiene: [ 9 ]

08+38k+38+18=2/2{\displaystyle {\frac {0}{8}}\mathbf {+} {\frac {3}{8}}\mathbf {k} +{\frac {3}{8}}+{\frac {1}{8}}={\sqrt {2}}/2}
k=43(21)0,5522847498{\displaystyle \mathbf {k} ={\frac {4}{3}}({\sqrt {2}}-1)\approx 0.5522847498}

Análisis de errores

Sin embargo, tenga en cuenta que la curva de Bézier resultante está completamente fuera del círculo, con una desviación máxima del radio de aproximadamente 0,00027. Para el resto de la discusión, la deriva radial para un t dado esincógnita(t)2+y(t)21{\displaystyle {\sqrt {x(t)^{2}+y(t)^{2}}}-1}.

Corrección no atribuida: Agregar una pequeña corrección a puntos intermedios como

A=[k+0,0009,10,00103]B=[10,00103,k+0,0009],{\displaystyle {\begin{aligned}\mathbf {A'} &=[\mathbf {k} +0.0009,1-0.00103]\\\mathbf {B'} &=[1-0.00103,\mathbf {k} +0.0009],\end{aligned}}}

La magnitud de la desviación del radio a 1 se reduce en un factor de aproximadamente 3, a 0,000068 (a costa de la derivabilidad de la curva circular aproximada en los puntos extremos).

Corrección de tres parámetros de Ellsworth: en lugar de resolver para un solo k , resuelva paraA=[0,a],{\displaystyle \mathbf {A} =[0,a],}A=[b,do],{\displaystyle \mathbf {A'} =[b,c],}B=[do,b],{\displaystyle \mathbf {B'} =[c,b],}B=[a,0].{\displaystyle \mathbf {B} =[a,0].}Minimizar la deriva radial máxima, que esF(a,b,do)=máximo(|d(t)|,0t1){\textstyle f(a,b,c)=\max(\left|d(t)\right|,0\leq t\leq 1)}La resolución numérica da como resultado a = 1,00005507808, b = 0,55342925736 y c = 0,99873327689 . La deriva radial máxima es 0,000055. [ 11 ]

Corrección de mínimos cuadrados de Ellsworth: Resuelva para el k que minimiza01(d(t))2dt{\textstyle \int _{0}^{1}{\left(d(t)\right)}^{2}dt}Numéricamentek0,55197038140{\displaystyle k\approx 0.55197038140}. La deriva radial máxima es 0,0002, para una reducción del 1,9% en la deriva radial cuadrática total en comparación con el caso de tres parámetros. [ 12 ]

Caso general

Podemos aproximar un círculo unitario de radio a partir de un número arbitrario de curvas de Bézier cúbicas. Sea el arco el que comienza en el puntoA{\displaystyle \mathbf {A} }y termina en el puntoB{\displaystyle \mathbf {B} }, situados a distancias iguales por encima y por debajo del eje x, abarcando un arco de ánguloθ=2ϕ≤ =π2{\displaystyle \theta =2\phi \leq ={\tfrac {\pi }{2}}}:

A=[porque(ϕ),pecado(ϕ)]B=[porque(ϕ),pecado(ϕ)]=[Aincógnita,Ay]{\displaystyle {\begin{aligned}\mathbf {A} &=[\cos(\phi ),\sin(\phi )]\\\mathbf {B} &=[\cos(\phi ),-\sin(\phi )]=[\mathbf {A} _{x},-\mathbf {A} _{y}]\end{aligned}}}

Después de resolver la curva que comienza y termina en los puntos dados, el punto medio del arco ocurre ent=0,5{\displaystyle t=0.5}y dado que las tangentes de los puntos finales de la curva son las mismas que las de los círculos, los puntos de control se pueden escribir como:

A=[4Aincógnita3,(1Aincógnita)(3Aincógnita)3Ay]=[4porque(ϕ)3,(1porque(ϕ))(3porque(ϕ))3pecado(ϕ)]B=[Aincógnita,Ay]=[4porque(ϕ)3,(1porque(ϕ))(3porque(ϕ))3pecado(ϕ)]{\displaystyle {\begin{aligned}\mathbf {A'} &=[{\frac {4-\mathbf {A} _{x}}{3}},{\frac {(1-\mathbf {A} _{x})(3-\mathbf {A} _{x})}{3\mathbf {A} _{y}}}]&=[{\frac {4-\cos(\phi )}{3}},{\frac {(1-\cos(\phi ))(3-\cos(\phi ))}{3\sin(\phi )}}]\\\mathbf {B'} &=[\mathbf {A'} _{x},-\mathbf {A'} _{y}]&=[{\frac {4-\cos(\phi )}{3}},{\frac {(1-\cos(\phi ))(3-\cos(\phi ))}{-3\sin(\phi )}}]\end{aligned}}}

La multiplicación de los valores proporciona soluciones generales para arcos de cualquier radio. El uso de matrices de rotación permite dibujar cualquier ángulo. [ 13 ]

Las restricciones de las soluciones de Ellsworth pueden aplicarse al caso general y resolverse numéricamente.

Ejemplos

Otros enfoques

Para curvas de Bézier de grado n > 1, Ahn (2019) proporciona unaGRAMO2{\displaystyle G^{2}}aproximación para cualquier número de segmentos. La distancia de Hausdorff, así como la mencionada "deriva radial", muestran 2n - 1 puntos extremos y la aproximación de Ahn es, al momento de la publicación, la que presenta la menor distancia máxima de Hausdorff. Se proporcionan soluciones analíticas explícitas para los casos cuadrático, cúbico y cuártico. [ 14 ]

La aplicación de una transformación afín a las restricciones permite dibujar elipses y arcos elípticos. [ 15 ]

Fuentes

Las fuentes TrueType utilizan curvas de Bézier compuestas por curvas de Bézier cuadráticas (de segundo orden), mientras que la mayoría de las fuentes PostScript Type 1 y OpenType CFF utilizan curvas cúbicas (de tercer orden). Para describir un diseño tipográfico típico como una fuente de ordenador con una precisión determinada, las curvas de Bézier de tercer orden requieren menos datos que las de segundo orden; y estas, a su vez, requieren menos datos que una serie de líneas rectas. Esto es cierto incluso aunque cualquier segmento de línea recta requiera menos datos que cualquier segmento de una parábola; y ese segmento parabólico, a su vez, requiera menos datos que cualquier segmento de una curva de tercer orden.

Véase también

Referencias

  1. Eugene V. Shikin; Alexander I. Plis (14 de julio de 1995). Manual sobre splines para el usuario . CRC Press. pág.  96. ISBN 978-0-8493-9404-1.
  2. API Polybezier de Microsoft
  3. Referencia de la API de Papyrus Béziergon
  4. "Una caja de crayones mejor" . InfoWorld. 1991.
  5. Rebaza, Jorge (24 de abril de 2012). Un primer curso de matemáticas aplicadas . John Wiley & Sons. ISBN 9781118277157.
  6. (Empresa), Wolfram Research (13 de septiembre de 1996). Paquetes complementarios estándar de Mathematica ® 3.0 . Cambridge University Press. ISBN 9780521585859.
  7. Goodman, TNT (9 de diciembre de 1983). "Propiedades de las β-splines" . Journal of Approximation Theory . 44 (2): 132– 153. doi : 10.1016/0021-9045(85)90076-0 .
  8. DeRose, Anthony D. (1 de agosto de 1985). "Continuidad geométrica: una medida de continuidad independiente de la parametrización para el diseño geométrico asistido por computadora" .
  9. 1 2 Stanislav, G. Adam. "Dibujo de un círculo con curvas de Bézier" . Archivado del original el 16 de junio de 2023. Recuperado el 10 de abril de 2010 .
  10. "Digitalización de diseños de letras" . Apple . Consultado el 26 de julio de 2014 .
  11. Mortensen, Spencer (2012). "Aproximar un círculo con curvas de Bézier cúbicas" . spencermortensen.com .
  12. Mortensen, Spencer (2022). "Aproximación por mínimos cuadrados del círculo utilizando curvas de Bézier cúbicas" . spencermortensen.com .
  13. DeVeneza, Richard (2004). "Dibujo de un círculo con curvas de Bézier" (PDF) . Consultado el 10 de abril de 2010 .
  14. Ahn, Young Joon (octubre de 2019). "Aproximación de círculos mediante curvas de Bézier G 2 de grado n con 2 n − 1 puntos extremos". Journal of Computational and Applied Mathematics . 358 : 20– 28. doi : 10.1016/j.cam.2019.02.037 .
  15. Van Aken, Jerry R. (2024). "Dibujo de elipses y arcos elípticos con aproximaciones de curvas de Bézier cúbicas por partes". arXiv : 2407.17675 [ cs.GR ].