Diferencia entre revisiones de «Curvas de Bézier (Grupo 32)»

De MateWiki
Saltar a: navegación, buscar
Línea 208: Línea 208:
 
==Representación de la curvatura y torsión en función del parámetro t==
 
==Representación de la curvatura y torsión en función del parámetro t==
 
En el espacio tridimensional, las características de una curva se definen en el espacio tridimensional, por dos factores principales, su curvatura k(t) y su torsión(t).
 
En el espacio tridimensional, las características de una curva se definen en el espacio tridimensional, por dos factores principales, su curvatura k(t) y su torsión(t).
<br> <center> <math> \kappa(t) = \frac{\|\math{B}'(t) \times math{B}''(t) \|}{\|\math{B}'(t)\|^3} </math> </center>
+
<br> <center> <math> \kappa(t) = \frac{\|\mathbf{B}'(t) \times mathbf{B}''(t) \|}{\|\mathbf{B}'(t)\|^3} </math> </center>
 
<br>  
 
<br>  
  
<br> <center> <math> \tau(t) = \frac{\math{B}'(t) \times \math{B}''(t) · \math{B}'''(t)}{|\math{B}'(t) \times \math{B}''(t)|^2} </math> </center>
+
<br> <center> <math> \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} </math> </center>
  
  

Revisión del 20:59 8 dic 2024

Trabajo realizado por estudiantes
Título Derformación plana. Grupo 32
Asignatura Teoría de Campos
Curso 2024-25
Autores Nombres: Rocío Jamileth Ruiz Herrera, Mario Del Amo Domínguez, Diana Estefanía Sagal Tituaña, Jesús Gil Gutierrez y David Bretaña Blanco
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura

Las cuervas de Bézier deben su nombre al ingeniero francés Pierre Bézier, quien las presentó en 1962 y posteriormente utilizó para el diseño de partes de automóviles para Renault. Actualmente, estas curvas son indispensables para la industria de la gráfica por computadora, el diseño industrial y la ingeniería, facilitando la creación de formas más fluidas y precisas.

Las curvas de Bézier de orden [math]n[/math] están definidas por los puntos de control [math]P_0,P_1,...,P_n[/math] y se pueden expresar mediante la siguiente fórmula:

[math] B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ [/math]

donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:

[math] B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ [/math]

para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.

1 Representación de la curva de Bézier cúbica (n=3) junto con la curva poligonal que conecta los cuatro puntos coplanarios

Primero, seleccionamos cuatro puntos coplanarios cualesquiera. En este caso conseguimos los puntos coplanarios en el plano z=0 que posteriormente sustituiremos en la formula de Bézier:


[math] B(t) = (1-t)^3*P_0 + 3t(1-t)^2P_1 + 3t^2(1-t)P_2 + t^3P_3, \; t \in [0,1] [/math]

Para mejor manejo de la fórmula la expresaremos por componentes en la base física cartesiana [x,y,z]:

[math] x(t) = (1 - t)^3 P_{0x} + 3(1 - t)^2 t P_{1x} + 3(1 - t) t^2 P_{2x} + t^3 P_{3x}[/math]

[math] y(t) = (1 - t)^3 P_{0y} + 3(1 - t)^2 t P_{1y} + 3(1 - t) t^2 P_{2y} + t^3 P_{3y}[/math]

[math] z(t) = (1 - t)^3 P_{0z} + 3(1 - t)^2 t P_{1z} + 3(1 - t) t^2 P_{2z} + t^3 P_{3z}.[/math]

Posteriormente elegimos los puntos coplanarios:
[math] P0=(0,0,0),P1=(1,2,0),P2=(4,3,0),P3=(3,0,0) [/math].

Tras sustituir los puntos en la fórmula obtenemos una gráfica en la que se puede observar la curva de Bézier de los cuatro puntos junto con la curva poligonal que une los puntos.

Curva de Bézier
%Puntos de control coplanarios
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [4, 3,0];
P3 = [3, 0,0];
P = [P0; P1; P2; P3];
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);
% Representación gráfica
plot(x, y, 'b', 'LineWidth', 2); hold on;
plot(P(:, 1), P(:, 2), 'ro--', 'LineWidth', 1.5); 
% Polígono de control
legend('Curva de Bézier', 'Curva poligonal');
title('Curva de Bézier Cúbica');
axis equal;
grid on;
xlabel('Eje x'); ylabel('Eje y');

2 Representación del campo tangente [math]T(t)[/math] y del campo normal [math]N(t)[/math] en varios puntos de la curva

A continuación calcularemos el campo tangente y y el vector normal de la curva de Bézier. Para obtener la tangente debemos derivar la función y dividirla por su módulo:

[math]\mathbf{T}(t)= \frac{\frac{dB(t)}{dt} }{\|\frac{dB(t)}{dt}\|}[/math]

Para mejor manejo lo podemos expresar en la base física cartesiana[x,y]

[math] dx(t)/dt = -3(1-t)^2 x_0 + 3(1-t)^2 x_1 - 6t(1-t) x_1 + 6t(1-t) x_2 - 3t^2 x_2 + 3t^2 x_3 [/math]
[math] dy(t)/dt = -3(1-t)^2 y_0 + 3(1-t)^2 y_1 - 6t(1-t) y_1 + 6t(1-t) y_2 - 3t^2 y_2 + 3t^2 y_3 [/math]

Como el vector normal es ortogonal al vector tangencial, el campo normal lo obtenemos rotando 90º el vector normal:

[math]\mathbf{N}(t) ={[ -T_y(t), T_x(t)]}[/math]

Siendo [math]T_x(t)[/math] y [math]T_y(t)[/math] las derivadas q componen el campo tangente en la base física cartesiana.

Campo tangente y Campo normal
%Puntos de control coplanarios
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [4, 3,0];
P3 = [3, 0,0];
P = [P0; P1; P2; P3];
t = linspace(0, 1, 30);
% 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
dx = gradient(x, t);
dy = gradient(y, t);
% Campo tangente
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Campo normal
N = [-T(2, :); T(1, :)];
% Representación de los campos tangente y normal
hold on;
plot(x, y, 'b-', 'LineWidth', 2); 
quiver(x, y, T(1, :), T(2, :), 0.5,'k');
quiver(x, y, N(1, :), N(2, :), 0.5, 'r');
legend('Curva de Bézier', 'Campo Tangente', 'Campo Normal');
title('Campo Tangente y Campo Normal');
xlabel('Eje x'); ylabel('Eje y');
grid on;
hold off


3 Representación de la curvatura de la curva en función del parámetro t

La curvatura κ(t) de una curva, mide el grado de cambio en la orientación de la curva en cada punto. Es decir, indica cómo varía la dirección del vector tangente a medida que se avanza a lo largo de la curva, considerando una unidad de longitud en función del parámetro t.

La curvatura κ(t) de una curva parametrizada en el plano x(t) e y(t) se calcula con la siguiente fórmula:


[math] \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}[/math]

Donde:

x(t)y y(t) son las componentes x e y son las componentes de la curva en función del parámetro t.

x'(t)y y'(t) son las primeras derivadas de las componentes x(t) e y(t)

x(t)y y(t) son las segundas derivadas de las componentes x(t) e y(t)

Curvatura de la curva de Bézier
% Puntos coplanarios
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [4, 3,0];
P3 = [3, 0,0];
t = linspace(0, 1, 50);% Parametro t (0,1)
% 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 curva de Bézier
dx = gradient(x, t);
dy = gradient(y, t);
% Vectores tangentes normalizados
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Vectores perpendiculares al vector tangente(vector normal)
N = [-T(2, :); T(1, :)];
% segunda derivada de la curva
Ddx = gradient(dx, t); Ddy = gradient(dy, t);
% Curvatura
curva = abs(dx .* Ddy - dy .* Ddx) ./ (dx.^2 + dy.^2).^(3/2);
% Representar curvatura
figure;
plot(t, curva, 'b-', 'MarkerSize', 2);
title('Curvatura de la Curva de Bézier');
xlabel('t'); ylabel('k(t)');
grid on;

4 Representación de los vectores tangentes y normales junto con la circunferencia osculatriz asociada a cada punto de la curva

En este apartado se adjunta una animación en Matlab que representa la dinámica de los vectores tangente, normal y de la circunferencia osculatriz mientras se recorre la curva de Bézier. Se observa que el vector tangente indica la dirección de la curva en cada punto; el vector normal, perpendicular al vector tangente apunta hacia el centro de la curva. Por otro lado, la circunferencia osculatriz es el círculo que se ajusta de la mejor manera posible a una curva en un punto específico, de manera que tiene la misma dirección (tangente) y curvatura que la curva en ese punto. para normalizar el vector tangente, cuando la curva no está parametrizada por longitud de arco, se obtiene:


% Puntos coplanarios
P0 = [0, 0,0];
P1 = [1, 2,0];
P2 = [4, 3,0];
P3 = [3, 0,0];
t = linspace(0, 1, 50);% Parametro t (0,1)
% 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 curva de Bézier
dx = gradient(x, t);
dy = gradient(y, t);
% Vectores tangentes normalizados
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2);
% Vectores perpendiculares al vector tangente(vector normal)
N = [-T(2, :); T(1, :)];
% segunda derivada de la curva
Ddx = gradient(dx, t); Ddy = gradient(dy, t);
% Curvatura
curva = abs(dx .* Ddy - dy .* Ddx) ./ (dx.^2 + dy.^2).^(3/2);
% Radio de curvatura
R = 1 ./ curva;
% Animación
for i = 1:length(t)
clf;%restablecer la figura
plot(x, y, 'k-', 'LineWidth', 2);
hold on
% Tangente
quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'b', 'LineWidth', 2);
% Normal
quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 2);
% Circunferencia osculatriz
centro = [x(i), y(i)] + R(i) * N(:, i)';
theta = linspace(0, 2*pi, 100);
circx = centro(1) + R(i) * cos(theta);
circy = centro(2) + R(i) * sin(theta);
plot(circx, circy, 'c-');
title('Animación: Vectores y Circunferencia Osculatriz');
xlabel('x'); ylabel('y');
axis equal
grid on
pause(0.2);
end

5 Representación de la curva de Bézier tridimensional junto con su respectiva curva poligonal

6 Representación de la curvatura y torsión en función del parámetro t

En el espacio tridimensional, las características de una curva se definen en el espacio tridimensional, por dos factores principales, su curvatura k(t) y su torsión(t).


[math] \kappa(t) = \frac{\|\mathbf{B}'(t) \times mathbf{B}''(t) \|}{\|\mathbf{B}'(t)\|^3} [/math]



[math] \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} [/math]