Diferencia entre revisiones de «Curvas de Bézier Grupo 2»

De MateWiki
Saltar a: navegación, buscar
(Representación del campo tangente T(t) y del campo normal N(t) en varios puntos de la curva.)
(Representación del campo tangente T(t) y del campo normal N(t) en varios puntos de la curva.)
Línea 67: Línea 67:
  
  
'''Cálculo del Vector Tangente <math>T(t)</math>:'''
+
'''* Cálculo del Vector Tangente <math>T(t)</math>:'''
  
 
El vector tangente <math>T(t)</math> es la derivada de la curva \(B(t)\) con respecto al parámetro <math>t</math>:
 
El vector tangente <math>T(t)</math> es la derivada de la curva \(B(t)\) con respecto al parámetro <math>t</math>:

Revisión del 21:01 2 dic 2024

Trabajo realizado por estudiantes
Título Curvas de Bézier (Grupo 2)
Asignatura Teoría de Campos
Curso 2024-25
Autores Marta Escaso Camacho
Maximiliano Rodríguez Ruiz
Beatrice Laval González
Alejandro Villaverde Carrascosa
Daniel Pérez Cámara
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura

Las curvas de Bézier son un sistema que se desarrolló sobre 1960 para el diseño aeronáutico, el trazado de dibujos técnicos y el diseño de automóviles. Fueron ideadas por el ingeniero francés Pierre Bézier y posteriormente desarrolladas por Paul de Casteljau. 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 [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 para [math]n=3[/math], junto con la curva poligonal que conecta cuatro puntos de control coplanarios.

En primer lugar seleccionamos cuatro puntos de control coplanarios ([math]P_0,P_1,P_2,P_3[/math]). Definimos la fórmula de la curva cúbica en Matlab usando los polinomios de Bernstein y los coeficientes binomiales. La imagen representa la gráfica de la curva de Bézier y la poligonal de control. Se puede observar cómo los puntos de control influyen en la forma de la curva, lo que nos permite adaptarla a distintas aplicaciones.

CURVA DE BÉZIER CÚBICA
% Selección de puntos de control coplanarios
P0 = [0, 0];
P1 = [4, 2];
P2 = [0, 2];
P3 = [4, 4];
n = 3; % Orden de la curva de Bézier

% Vector de puntos de control
P = [P0; P1; P2; P3];

% Puntos para la curva de Bézier
numPuntos = 100;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula

% Cálculo de la curva usando la fórmula
for i = 0:n
    % Coeficiente binomial
    coefBin = nchoosek(n, i);
    % Polinomio de Bernstein
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i));
    % Curva de Bézier
    B = B + Bernstein' * P(i+1, :);
end

% Graficar la curva y la poligonal de control
figure;
hold on;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier
% Se pone título a la gráfica
title('Curva de Bézier cúbica');
% Se pone nombre a los ejes
xlabel('Eje x');
ylabel('Eje y');
legend('Poligonal de control', 'Curva Bézier');
grid on;
hold off;


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

* Cálculo del Vector Tangente [math]T(t)[/math]:

El vector tangente [math]T(t)[/math] es la derivada de la curva \(B(t)\) con respecto al parámetro [math]t[/math]:

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

donde la derivada del polinomio de Bernstein es:



CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL
% Vector de puntos de control coplanarios
P = [0, 0; 4, 2; 0, 2; 4, 4]; 
n = 3; % Orden de la curva de Bézier

% Puntos para la curva de Bézier
numPuntos = 100;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula
dB = zeros(numPuntos, 2);  % Derivada de la curva

% Cálculo de la curva y derivada
for i = 0:n
    coefBin = nchoosek(n, i); % Coeficiente binomial
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada
    
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada
end

% Obtenemos el vector tangente
T = dB ./ vecnorm(dB, 2, 2);

% Calculamos el vector normal
N = [-T(:, 2), T(:, 1)]; % Rotación de 90°

% Puntos de la curva para dibujar vectores tangentes y normales
indices = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos

% Graficar la curva y la poligonal de control
figure;
hold on;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier

% Graficar vectores tangentes y normales
quiver(B(indices, 1), B(indices, 2), T(indices, 1), T(indices, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)
quiver(B(indices, 1), B(indices, 2), N(indices, 1), N(indices, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)
title('Campos tangente y normal');
xlabel('Eje x');
ylabel('Eje y');
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');
grid on;
hold off;


3 Representación de la curvatura de la curva en función del parámetro [math]t[/math].

4 Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.

5 Representación de la curva de Bézier tridimensional, junto con la curva poligonal que conecta los cuatro puntos que están en el espacio tridimensional y no pertenecen al mismo plano.

6 Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro [math]t[/math].

7 Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.

8 Aplicación de una curva de Bézier al tramo de un circuito de [math]F_1[/math].

9 Aplicaciones de las curvas de Bézier en la ingeniería.