Está en la página 1de 6

Grficos

Algoritmo de suavizado mediante curvas de Bzier


por Jean-Yves Queinec

Introduccin

Necesitaba un algoritmo de suavizado para


mi LQprofil programa. LQprofil est diseado para modeladores escala, que
tienen que dibujar y plantillas de planos aerodinmicos de impresin, es decir,
una placa de corte a la forma utilizada para construir tramos planos
aerodinmicos escaladas. Una seccin de perfiles de ala (tales como
superficies de sustentacin NACA) est definido por una matriz de
puntos. Prob rutinas existentes, pero ninguno dio buenos resultados para
m. Algunos de ellos producen menos o excesivas curvas suavizadas, y
frecuentemente las curvas suavizadas no pas por los puntos definidos. Decid
crear mi propio algoritmo, con un factor de suavizado, y dibujar las curvas
exactamente a travs de los puntos. Las curvas de Bzier parecan ser
adecuado para resolver el problema.

Las curvas de Bzier

Pierre Bzier era un ingeniero francs que trabajaba la empresa


Renault. ecuaciones de Bzier utiliza 4 puntos: dos puntos de la curva (P1 y
P4) y dos puntos de control (ver el diagrama de abajo). P2 est situado en el
lado "correcto" de P1 y P3 se encuentra en el lado "izquierdo" de P4.

Ecuaciones de Bzier son ecuaciones paramtricas en una variable t , y son


simtricas con relacin a x e y :

Bx (t) = (1-t) 3 x P1X + 3 x (1-t) 2 xtx P2x + 3 x (1-t) xt 2 x P3X + t 3 x P4x


Por (t) = (1-t ) 3 x P1Y + 3 x (1-t) 2 xtx P2Y + 3 x (1-t) xt 2 x P3Y + t 3 x P4y
La figura anterior muestra una construccin geomtrica de los puntos P1, P2,
P3, y P4 con t = 0,5.

El t parmetro (que vara de 0 a 1) corta el segmento P1-P4 a intervalos, de


acuerdo con la precisin deseada.
Cuando t = 0 resultados son Bx = P1.x y By = P1.y
Cuando t = 1 resultados son Bx = P4.x y By = P4.y

Si uno tiene NB1 puntos de la curva, se necesita un total de NB2 = NB1 * 3 +


1 puntos, porque entre cada punto P de la curva tenemos que construir dos
puntos de control nombradas PC1 y PC2. Los puntos de la curva, y los puntos
de control asociados, se almacenan en la matriz BB de TPoints BB: = array
[0..NB2] de TPoints.

Se puede decir que un punto de la curva, que no es un punto final, P tiene un


punto antes de "izquierda" control de tipo P2, y tiene un siguiente punto de
control "derecha" de tipo P1. La curva de Bzier pasa a travs de los puntos
P1 y P4, y la aparicin curva depende de los dos puntos de control, P2 y
P3. Para resolver el problema de la suavizacin de curvas, tenemos que
encontrar un mtodo para la construccin de los puntos P2 y P3 de control.

Primer enfoque
Para suavizar los bordes Pn de la polilnea verde, uno puede imaginar
intuitivamente que la curva de suavizado debe ser tangente a un segmento,
que es paralela al segmento (Pn-3, Pn + 3). Se une a los puntos anteriores y
siguientes en relacin con el punto actual. La figura anterior muestra cmo
dibujar el punto de control PC1, que se encuentra a la "derecha" del punto Pn
curva. S1a es la mitad del segmento Pn S1 y PC1 se encuentra en el segmento
(S1a, Pn + 3). La longitud de la (S1a, PC1) segmento es aproximadamente 1/3
de la (S1, Pn + 3) longitud del segmento.

En breve :

Los puntos de control para el algoritmo de suavizado sern colocados


en la lnea de tangente, y su desplazamiento desde el punto de la curva
controlarn la aparicin curva.
Para cada punto de la curva, se utilizan 3 puntos
la PC2 punto de control (ndice n-1) utilizado para construir la tangente
y para definir la curva.
el punto P de la curva (ndice n, con n mod 3 = 0)
la PC1 punto de control (ndice n + 1) que se utiliza para construir la
tangente y para definir la curva.

El caso particular de los puntos finales (n = 0 y n = NB2) ofrece 2


posibilidades dependiendo de si la curva es cerrada o abierta. Cuando la curva
es cerrada, P (0) = P (NB), uno puede ejecutar el algoritmo de suavizado
porque se conocen los puntos prximos y anteriores. Cuando la curva est
abierto P (0) no tiene punto de PC2 anterior. Consideraremos que PC2 y P (0)
somos los mismos. Idem para el punto del ltimo punto P (NB2) PC1 conrol.

Este mtodo da buenos resultados con curvas simples, pero no funciona bien
en todos los casos. Por ejemplo, un hexgono se transforma en un potatod (se
parece a una patata). El siguiente paso ser tratar de encontrar una solucin
ms flexible. Por ejemplo, el algoritmo debera ser capaz de transformar
progresivamente un cuadrado a un crculo.

Geomtrico construccin puntos de control

Esta solucin geomtrica es totalmente emprica, pero da excelentes


resultados.

1. S1 es el punto simtrico de P [n-1] en relacin con P [n]


2. S2 es el punto simtrico de P [n + 2] en relacin con P [n]
3. S1a y S2a son los puntos homothetical de S1 y S2 con un factor de
lisa variando desde 0,0 hasta 1,5. Esto permite que para ponderar las
posiciones puntos anteriores y siguientes antes de dibujar la curva. Un
factor liso de cero produce una lnea recta P [n], P [n + 1]. la figura
anterior muestra un factor liso de 0,75.
A lisas del factor excesivamente curvas de la lnea. Un factor liso de
1,05 produce un crculo a partir de un cuadrado.
4. M es el punto medio del segmento P [n-1], P [n]
5. S1b es el punto medio del segmento S1a, P [n-1]
6. S2b es el punto medio del segmento S2a, P [n]
7. El punto de control PC1 es el punto medio del segmento M, S1b
8. El punto de control PC2 es el punto medio del segmento M, S2b

Este mtodo se codifica en el proyecto PB1 Delphi.

Un volcado de pantalla del programa aparece a continuacin:


Programa Descripcin Palabras clave
PB1 Dibujar y distorsionar los polgonos utilizando las curvas Algoritmo de
de Bzier y un algoritmo de suavizado originales. suavizado con el
factor liso,
Este algoritmo proporciona un parmetro suave curvas de Bzier,
ajustable, capaz de transformar un cuadrado a un Square a la
crculo. transformacin
crculo,
las curvas de Bzier se dibujan con una pluma cuadrcula
NOTXOR, la opcin no est disponible con la funcin patrn,
PolyBezier API de Windows. Simplemente haciendo Dibujo flores.
clic en los bordes de los polgonos o en los puntos de
control de Bzier, puede obtener muchas formas
complejas, como las flores. Las reas pueden ser de
color.

Descargar: Jean-YvesQueincBezierCurves.zip
Actualizado
26 de Feb de 2005
desde 12 Enero de 2001

También podría gustarte