Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniera
Profesor:
Seccin: C
Fecha: 30/03/2016
INTRODUCCIN
Las ms importantes curvas que se usan actualmente en el diseo computacional son las
curvas de Bzier y los B-Splines. Es gracias al trabajo de dos matemticos franceses,
Bzier y de Casteljau, que se desarrollan aplicaciones para el incipiente diseo
computacional de los aos 60, bajo el alero de la industria automotriz.
El resultado son herramientas que los diseadores ocupan regularmente, bajo el nombre
genrico de trazados o diseo vectorial, cuya matemtica opera tras bambalinas con las
ideas que estos matemticos franceses, y otros ms, desarrollaron.
Una curva puede ser desdoblada en algunos puntos en dos curvas, o de manera arbitraria
en tantas curvas como se quieran, cada una de las cuales es una nueva curva de Bzier.
Algunas curvas que parecen simples, tales como una circunferencia, no pueden ser
descritas de manera exacta mediante curvas de Bzier o segmentos de esta clase de curvas
(por raro que parezca una curva formada a su vez por cuatro segmentos de curva puede
aproximarse a un crculo, con un error radial mximo menor de una parte por mil, en cada
punto de control interno la distancia es de manera horizontal o vertical de un punto
de control del exterior sobre el crculo unidad).
El problema general surge ante la necesidad trazar curvas con mucha precisin, para
lograr distintas piezas que puedan ensamblar correctamente.
Para ello, los diseadores de la poca solan ocupar procedimientos de dibujo, por
ejemplo, para trazar una aproximacin de una curva que une dos puntos, usando las
llamadas reglas francesas, o bien curvaban listones para generar lo que ahora se denomina
spline (astilla, en ingls).
Pero de tal forma, no siempre se lograba la precisin necesaria; aunque ambos mtodos
ahora tienen su equivalente computacional, respectivamente, las Curvas de Bzier y
las Splines, ambos elementos fundantes del diseo vectorial.
APLICACIN
CURVAS DE BEZIER
Las curvas de Bzier se utilizan en el diseo asistido por computadora y deben su nombre
al matemtico francs Pierre Bzier (1910-1999), quien trabaj en la industria automotriz.
Una curva de Bzier cbica est determinada por cuatro puntos de control, P0(x0, y0),
P1(x1, y1), P2(x2, y2), P3(x3, y3), y est definida por las ecuaciones paramtricas:
= 0 (1 )3 + 31 (1 )2 + 32 2 (1 ) + 3 3
= 0 (1 )3 + 31 (1 )2 + 32 2 (1 ) + 3 3
Donde 0 t 1. Notar que cuando t = 0 tenemos (x, y) = (x0, y0) y cuando t = 1 tenemos
(x, y) = (x3, y3), de modo que la curva comienza en P0 y termina en P3.
(a) Graficar la curva de Bzier con puntos de control P0 (4, 1), P1 (28, 48), P2 (50, 42) y
P3 (40, 5). Luego en la misma ventana dibuje los segmentos de recta P0P1, P1P2 y P2P3.
Notar que los puntos de control intermedios P1 y P2 no se encuentran en la curva; la curva
comienza en P0, se dirige hacia P1 y P2 sin alcanzarlos y termina en P3.
(b) En el dibujo de la parte 1 parece que la recta tangente en P0 pasa por P1 y la recta
tangente en P3 pasa por P2. Pruebe que esto es as.
(c) Encuentre la parametrizacin de la evoluta de la curva de Bzier dada y dibjela.
(d) Trate de producir una curva de Bzier con un bucle cambiando el segundo punto de
control en la parte 1.
(e) Algunas impresoras lser utilizan curvas de Bzier para representar letras y otros
smbolos. Experimente con varios puntos de control hasta que encuentre una curva de
Bzier que represente de manera razonable la letra C.
= 0 (1 )3 + 31 (1 )2 + 32 2 (1 ) + 3 3
= 0 (1 )3 + 31 (1 )2 + 32 2 (1 ) + 3 3
Donde 0 t 1. Nosotros estamos dando los puntos 0 (0, 0 ) = (4, 1),
1 (1, 1 ) = (28, 48), 2 (2, 2 ) = (50, 42), 3 (3, 3 ) = (40, 5).
Cdigos en Phyton:
import numpy as np
import matplotlib.pyplot as plt
x0 = 4.
y0 = 1.
x1 = 28.
y1 = 48.
x2 = 50.
y2 = 42.
x3 = 40.
y3 = 5
t = np.linspace(0,1,100)
b) Para comprobar si los puntos P1 y P2 pertenecen a las rectas tangentes a los puntos
extremos P0 y P3 respectivamente procedemos a hallar las ecuaciones de estas:
= 4 (1 )3 + 3 28(1 )2 + 3 50 2 (1 ) + 40 3
= 90 2 12 + 72
= (1 )3 + 3 48(1 )2 + 3 42 2 (1 ) + 5 3
= 66 2 318 + 141
Sabiendo que en t=0:
= 4 (1 0)3 + 3 28(0)(1 0)2 + 3 50(0)2 (1 0) + 40(0)3 = 4
= (1 0)3 + 3 48(0)(1 (0))2 + 3 42(0)2 (1 (0)) + 5(0)3 = 1
Entonces el punto de paso de la recta tangente ser (4,1), P0 por lo tanto el vector
direccin ser:
= 90(0)2 12(0) + 72 = 72
= 66(0)2 318(0) + 141 = 141
Entonces el punto de paso de la recta tangente ser (40,5), P3 por lo tanto el vector
direccin ser:
= 90(1)2 12(1) + 72 = -30
= 66(1)2 318(1) + 141 = -111
Finalmente obtenemos la recta tangente:
= {(40 ,5) + ( 30, 111)}
Comprobamos que P2 pertenece a la recta tangente anterior igualando las componentes
x, y:
= 40 + 30 = 50
= 5 + 111 = 42
Siendo el mismo escalar k= 1/3, queda comprobado que P2 (50,42) pertenece a la recta
tangente que pasa por P3 (40,5).
Por lo que se demuestra que la recta tangente en P0 pasa por P1, y anlogamente la recta
tangente en P3 pasa por P2.
C) Clculo de la Evoluta:
Centro de Evoluta:
1
= () +
Derivamos X:
X = 0 (1 t)3 + 1 t(1 t)2 + 2 t 2 (1 t) + 3 t 3
Derivaremos por partes:
1) 0 (1 t)3 => Derivando => 30 (1 t)2 (1) = 30 (1 2t + 2 )
2) 31 t(1 t)2 => Derivando => 31 [1(1 )2 + 2(1 )(1)] = 31 (3 2
4 + 1)
3) 32 t 2 (1 t) => Derivando => 32 [2t(1 t) + 2 (1)] = 32 (2t 3t 2 )
4) 3 t 3 = 33 t 2
Derivamos X:
Y = 0 (1 t)3 + 31 (1 t)2 + 32 t 2 (1 t) + 3 t 3
Derivaremos por partes:
5) 0 (1 t)3 => Derivando => 30 (1 t)2 (1) = 30 (1 2t + 2 )
6) 31 t(1 t)2 => Derivando => 31 [1(1 )2 + 2(1 )(1)] =
31 (3 2 4 + 1)
7) 32 t 2 (1 t) => Derivando => 32 [2t(1 t) + 2 (1)] = 32 (2t 3t 2 )
8) 3 t 3 = 33 t 2
1
K(t) = ()3 . ()()
Hallaremos () :
Hallamos () () :
() () =
() () =
684(31 + 51 43 2 )
() = 3
27(1384 4 4424 3 + 1180 2 10156 + 2785)2
76(31 + 51 43 2 )
() = 3
3(1384 4 4424 3 + 1180 2 10156 + 2785)2
Sabemos que:
() () =
( () ()) () =
0 0 21204 + 34884
29412 2
( () ()) () =
2989764 11661516 t + 16639668 2 11655360 t 3 + 1941192 4
=
(1941192 t4 11655360 t3 + 16639668 t 2 11661516 t + 2989764)2 + (2647080 t 4 2786616 t 3 627912 t 2 + 2766096 t 1526688)2
1526688 + 2766096 t 627912 t 2 2786616 t 3 + 2647080 t 4
=
(1941192 t 4 11655360 t 3 + 16639668 t 2 11661516 t + 2989764)2 + (2647080 t 4 2786616 t 3 627912 t 2 + 2766096 t 1526688)2
x1 = 90.
y1 = 20.
x2 = 50.
y2 = 42.
x3 = 40.
y3 = 5.
e) comentario
Primer cambio:
import numpy as np
import matplotlib.pyplot as plt
x0 = 40.
y0 = 5.
x1 = 4.
y1 = 1.
x2 = 28.
y2 = 48.
x3 = 50.
y3 = 42.
x0 = 40.
y0 = 5.
x1 = 16.
y1 = 1.
x2 = 16.
y2 = 48.
x3 = 40.
y3 = 42.
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
xs, ys = zip(*verts)
ax.plot(xs, ys, '.--', lw=2, color='blue', ms=15)
t = np.linspace(0,1,100)
x0 = 40.
y0 = 11.
x1 = 19.
y1 = 2.
x2 = 21.
y2 = 53.
x3 = 40.
y3 = 43.
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
xs, ys = zip(*verts)
ax.plot(xs, ys, '.--', lw=2, color='blue', ms=15)
t = np.linspace(0,1,100)
import numpy as np
import matplotlib.pyplot as plt
x0 = 40.
y0 = 75.
x1 = 20.
y1 = 75.
x2 = 20.
y2 = 43.
x3 = 40.
y3 = 43.
x4 = 60
y4 = 43
x5 = 60
y5 = 11
x6 = 40
y6 = 11
verts = [(x0, y0),(x1, y1),(x2, y2),(x3,y3)]
verts2 = [(x3, y3),(x4, y4),(x5, y5),(x6,y6)]
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
xs, ys = zip(*verts)
ax.plot(xs, ys, '.--', lw=2, color='blue', ms=15)
ws, zs = zip(*verts2)
ax.plot(ws, zs, '.--', lw=2, color='blue', ms=15)
t = np.linspace(0,1,100)