Diferencia entre revisiones de «Curvas de Bezier Grupo 17»
(→Vector tangente, vector normal y circunferencia osculatriz asociado a la curva de Beizer) |
(→Vector tangente, vector normal y circunferencia osculatriz asociado a la curva de Beizer) |
||
| Línea 181: | Línea 181: | ||
La tangente indica la dirección de la curva en cada punto; el vector normal es perpendicular al tangente y apunta hacia el centro de la curva; la circunferencia osculatriz es el circulo que mejor aproxima la curva en un punto dado. | La tangente indica la dirección de la curva en cada punto; el vector normal es perpendicular al tangente y apunta hacia el centro de la curva; la circunferencia osculatriz es el circulo que mejor aproxima la curva en un punto dado. | ||
| − | •Vector tangente: | + | •Vector tangente: <center><math> \vec t(t)=\frac{1}{\sqrt{x'(t)^2 + y'(t)^2}}(x'(t)\vec i+y'(t)\vec j) </math></center> |
| − | <center><math> \vec t(t)=\frac{1}{\sqrt{x'(t)^2 + y'(t)^2}}(x'(t)\vec i+y'(t)\vec j) </math></center> | + | |
| − | •Vector normal: | + | •Vector normal: <center><math> \vec n(t)=\frac{1}{\sqrt{x'(t)^2 + y'(t)^2}}(-y'(t)\vec i+x'(t)\vec j)</math></center> |
| − | <center><math> \vec n(t)=\frac{1}{\sqrt{x'(t)^2 + y'(t)^2}}(-y'(t)\vec i+x'(t)\vec j)</math></center> | + | |
Revisión del 16:45 3 dic 2024
Las curvas de Bézier llevan el nombre del ingeniero francés Pierre Bézier, quien las publicó en 1962 y, posteriormente, trabajando en Renault, las utilizó ampliamente en el diseño de las distintas partes del automóvil. Hoy en día, estas curvas se han convertido en un estándar en la industria de la gráfica por computadora, el diseño industrial y la ingeniería, permitiendo crear formas fluidas y precisas. Las curvas de Bézier de orden n están definidas por los puntos de control P0,P1,...,Pn y se pueden expresar mediante la siguiente fórmula:
donde los coeficientes \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Curvas de Bézier. Grupo 17 |
| Asignatura | Teoría de Campos |
| Curso | 2024-25 |
| Autores | Alejandra García-Agulló Canle Álvaro Román Aguilera Fernando Barbancho Lara Jaime García Alegre |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
- 1 Curva de Bézier cúbica (n=3)
- 2 Campo tangente T(t) y campo normal N(t)
- 3 Curvatura de la Curva de Bézier
- 4 Vector tangente, vector normal y circunferencia osculatriz asociado a la curva de Beizer
- 5 Curva de Bézier tridimensional y curva poligonal
- 6 Gráficas de curvatura y de torsión
- 7 Triedo de Frenet a lo largo de la curva
- 8 Velocidad que debe mantener el Ferrari
- 9 Vector velocidad y vector aceleración centrípeta
- 10 Aplicaciones de las curvas de Bézier en la ingeniería
1 Curva de Bézier cúbica (n=3)
Una curva de Bézier cúbica es un caso especial de las curvas de Bézier que utiliza 4 puntos de control (P0, P1, P2, P3).
O la podemos expresar por componentes en la base física cartesiana [math]
\left[ \mathbf{x}, \mathbf{y}, \mathbf{z} \right]
[/math] de la forma:
A la hora de elegir los puntos coplanarios, hemos elegido los siguientes puntos:
Estos puntos son coplanarios en el plazo z=0 y además tienen características que permiten visualizar una curva de Bézier cúbica con una forma interesante, sin complicaciones en la implementación.
Esto garantiza que están en el mismo plano OXY, lo cual satisface la condición de coplanaridad de forma trivial.
% Puntos de control coplanares
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [3, 3,0];
P3 = [4, 0,0];
% Parámetro t (de 0 a 1)
t = linspace(0, 1, 50);
% Polinomios de Bernstein
B0 = (1 - t).^3;
B1 = 3 * t .* (1 - t).^2;
B2 = 3 * t.^2 .* (1 - t);
B3 = t.^3;
% Coordenadas de la curva de Bézier
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1);
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2);
% Representación gráfica
figure;
plot(x, y, 'b-', 'LineWidth', 2); hold on;
plot([P0(1) P1(1) P2(1) P3(1)], [P0(2) P1(2) P2(2) P3(2)], 'ro--');
legend('Curva de Bézier', 'Curva poligonal');
title('Curva de Bézier Cúbica');
xlabel('x'); ylabel('y');
grid on;
2 Campo tangente T(t) y campo normal N(t)
El análisis de las propiedades locales de una curva es fundamental en aplicaciones como la dinámica y la simulación. En este apartado, se calcularán y visualizarán el campo tangente T(t) y el campo normal N(t) en varios puntos de la curva de Bézier, mostrando cómo varían a lo largo de la trayectoria.
El campo tangente sirve para ver como un objeto se va a mover siguiendo la dirección de la curva, y determinar la dirección de un punto cuando la curva es una trayectoria.
También expresada en los componentes [math] \left[ \mathbf{x}, \mathbf{y}\right] [/math]
El campo normal servirá para diseñar caminos suaves y evitar cambios bruscos en la trayectoria.
siendo [math]T_x(t)[/math] y [math]T_y(t)[/math] los componentes x e y del vector T(t) de forma que se expresan de la forma:
El gráfico del campo de vectores normal y tangente nos permite visualizar como van variando estos vectores a lo largo de la trayectoria de la curva de bézier
% Puntos de control coplanares
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [3, 3,0];
P3 = [4, 0,0];
% Parámetro t (de 0 a 1)
t = linspace(0, 1, 50);
% Polinomios de Bernstein
B0 = (1 - t).^3;
B1 = 3 * t .* (1 - t).^2;
B2 = 3 * t.^2 .* (1 - t);
B3 = t.^3;
% Coordenadas de la curva de Bézier
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1);
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2);
% Derivadas de la curva de Bézier
dx = gradient(x, t);
dy = gradient(y, t);
% Vectores tangentes normalizados
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Vectores normales (perpendiculares al tangente)
N = [-T(2, :); T(1, :)];
% Representar la curva con campos tangente y normal
figure;
plot(x, y, 'b-', 'LineWidth', 2); hold on;
quiver(x, y, T(1, :), T(2, :), 0.5, 'r'); % Campo tangente
quiver(x, y, N(1, :), N(2, :), 0.5, 'g'); % Campo normal
legend('Curva de Bézier', 'Campo Tangente', 'Campo Normal');
title('Campo Tangente y Normal de la Curva de Bézier');
xlabel('x'); ylabel('y');
grid on;
El campo tangente está formado por líneas que siguen la dirección de la curva en cada punto, indicando cómo se orienta y mueve la curva a medida que avanzamos a lo largo de ella. Es esencial para entender la variación de la dirección de la curva y calcular propiedades como la curvatura.
El campo normal es perpendicular al campo tangente en cada punto y se orienta ortogonalmente a la curva. Este campo es clave para analizar la curvatura, ya que describe cómo la curva se "dobla".
Ambos campos, tangente y normal, son fundamentales para comprender la geometría y el comportamiento local de la curva.
3 Curvatura de la Curva de Bézier
La curvatura \( \kappa(t) \) de una curva mide el cambio de dirección del vector tangente por unidad de longitud en función del parámetro 𝑡.
Este concepto describe cómo cambia la dirección de la curva en cada punto.
En este apartado, se calculará y representará gráficamente la curvatura de la curva de Bézier planteada previamente, analizando su geometría local. Esto permitirá identificar puntos clave, como los de máxima y mínima curvatura, y optimizar el diseño de la curva.
El estudio de la curvatura es fundamental en aplicaciones prácticas, especialmente en la ingeniería de caminos. Por ejemplo, en el diseño de carreteras, este análisis ayuda a lograr un equilibrio entre suavidad y eficiencia, reduciendo la curvatura en puntos críticos. De esta manera, se mejora tanto la seguridad como la comodidad del usuario.
La curvatura se calcula a través de la siguiente fórmula:
para ello necesitaremos las derivadas primeras de la curva parametrizada (ya calculadas en el apartado anterior) y las segundas derivadas, que si la expresamos por componentes [math]
\left[ \mathbf{x}, \mathbf{y}\right]
[/math] nos queda:
Para la componente \( x(t) \):
Para la componente \( y(t) \):
% Puntos de control coplanares
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [3, 3,0];
P3 = [4, 0,0];
% Parámetro t (de 0 a 1)
t = linspace(0, 1, 50);
% Polinomios de Bernstein
B0 = (1 - t).^3;
B1 = 3 * t .* (1 - t).^2;
B2 = 3 * t.^2 .* (1 - t);
B3 = t.^3;
% Coordenadas de la curva de Bézier
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1);
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2);
% Derivadas de la curva de Bézier
dx = gradient(x, t);
dy = gradient(y, t);
% Vectores tangentes normalizados
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Vectores normales (perpendiculares al tangente)
N = [-T(2, :); T(1, :)];
% Segunda derivada de la curva
d2x = gradient(dx, t);
d2y = gradient(dy, t);
% Curvatura
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2);
% Representar curvatura
figure;
plot(t, curvatura, 'm-', 'LineWidth', 2);
title('Curvatura de la Curva de Bézier');
xlabel('t'); ylabel('\kappa(t)');
grid on;
4 Vector tangente, vector normal y circunferencia osculatriz asociado a la curva de Beizer
La representación dinámica de los vectores tangente, normal y de la circunferencia osculatriz permite entender mejor las propiedades geométricas de una curva. Este apartado incluye la creación de una animación en MATLAB que visualiza estos elementos mientras se recorre la curva de Bézier.
La tangente indica la dirección de la curva en cada punto; el vector normal es perpendicular al tangente y apunta hacia el centro de la curva; la circunferencia osculatriz es el circulo que mejor aproxima la curva en un punto dado.
•Vector tangente:
La relación entre la curvatura de una curva κ(t) y el radio de la circunferencia osculatriz R(t) es inversa. Es por eso, que se puede observar que en los puntos con menos curvatura como el (0,0) y el (0,4), que coinciden con los puntos inicial y final, son los puntos que mayor radio en la circunferencia osculatriz tienen.
La fórmula que relaciona la curvatura de la curva y el radio de la circunferencia osculatriz es inversamente proporcional y explica lo previamente explicado.
% Puntos de control coplanares
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [3, 3,0];
P3 = [4, 0,0];
% Parámetro t (de 0 a 1)
t = linspace(0, 1, 100);
% Polinomios de Bernstein
B0 = (1 - t).^3;
B1 = 3 * t .* (1 - t).^2;
B2 = 3 * t.^2 .* (1 - t);
B3 = t.^3;
% Coordenadas de la curva de Bézier
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1);
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2);
% Derivadas de la curva de Bézier
dx = gradient(x, t);
dy = gradient(y, t);
% Vectores tangentes normalizados
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Vectores normales (perpendiculares al tangente)
N = [-T(2, :); T(1, :)];
% Segunda derivada de la curva
d2x = gradient(dx, t);
d2y = gradient(dy, t);
% Curvatura
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2);
% Radio de curvatura
R = 1 ./ curvatura;
% Animación
figure;
for i = 1:length(t)
clf;
plot(x, y, 'b-', 'LineWidth', 2); hold on;
quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente
quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal
% Circunferencia osculatriz
center = [x(i), y(i)] + R(i) * N(:, i)';
theta = linspace(0, 2*pi, 100);
circle_x = center(1) + R(i) * cos(theta);
circle_y = center(2) + R(i) * sin(theta);
plot(circle_x, circle_y, 'm--');
title('Animación: Vectores y Circunferencia Osculatriz');
xlabel('x'); ylabel('y');
axis equal; grid on;
pause(0.1);
end
5 Curva de Bézier tridimensional y curva poligonal
Las curvas de Bézier pueden extenderse al espacio tridimensional para modelar trayectorias más complejas. En este contexto, representaremos una curva de Bézier tridimensional generada a partir de cuatro puntos de control no coplanares, junto con la curva poligonal asociada.
El objetivo sigue siendo el mismo que en dos dimensiones: suavizar la trayectoria de la curva y minimizar los cambios bruscos en su curvatura. Sin embargo, al trabajar en tres dimensiones, las aplicaciones son mucho más amplias, permitiendo modelar superficies y estructuras complejas. Estas curvas se utilizan ampliamente en ingeniería, diseño y gráficos por computadora para crear modelos tridimensionales, como automóviles, piezas industriales y otros objetos con formas detalladas.
La curva se define en términos de sus componentes cartesianos [math] \left[ \mathbf{x}, \mathbf{y}, \mathbf{z} \right] [/math], mediante la fórmula de Bézier cúbica:y los puntos de control utilizados son:
[math] P0=(0,0,0) [/math]
[math]P1=(10,20,5) [/math]
[math]P2=(20,-10,15) [/math]
[math]P3=(30,0,0) [/math].
% Puntos de control en 3D
P0 = [0, 0, 0];
P1 = [10, 20, 5];
P2 = [20, -10, 15];
P3 = [30, 0, 0];
% Parámetro t (de 0 a 1)
t = linspace(0, 1, 50);
% Polinomios de Bernstein
B0 = (1 - t).^3;
B1 = 3 * t .* (1 - t).^2;
B2 = 3 * t.^2 .* (1 - t);
B3 = t.^3;
% Coordenadas de la curva
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1);
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2);
z = B0 * P0(3) + B1 * P1(3) + B2 * P2(3) + B3 * P3(3);
% Representación gráfica
figure;
plot3(x, y, z, 'b-', 'LineWidth', 2); hold on;
plot3([P0(1) P1(1) P2(1) P3(1)], [P0(2) P1(2) P2(2) P3(2)], [P0(3) P1(3) P2(3) P3(3)], 'ro--');
legend('Curva de Bézier', 'Curva Poligonal');
title('Curva de Bézier Tridimensional');
xlabel('x'); ylabel('y'); zlabel('z');
grid on; axis equal;
Se puede apreciar claramente el propósito de las curvas de Bézier: suavizar la trayectoria al pasar por los puntos de control.
En este caso, la curva resultante muestra cómo se genera una transición suave entre los cuatro puntos dados, minimizando cambios bruscos y creando un recorrido continuo y elegante.
Este efecto es esencial en aplicaciones donde la fluidez y la precisión son clave, como en el diseño de trayectorias, superficies y modelos tridimensionales.