<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maximiliano.rruiz</id>
		<title>MateWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maximiliano.rruiz"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Maximiliano.rruiz"/>
		<updated>2026-04-23T16:16:13Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82827</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82827"/>
				<updated>2024-12-09T22:07:47Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control   &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;&amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt;. La fórmula paramétrica sería:  &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Bezier_4.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control para una curva de Bézier cúbica &lt;br /&gt;
  P0 = [0, 0,0]; &lt;br /&gt;
  P1 = [4, 2,0]; &lt;br /&gt;
  P2 = [0, 2,0]; &lt;br /&gt;
  P3 = [4, 4,0]; &lt;br /&gt;
 % Valor del parámetro t[0,1] &lt;br /&gt;
  t = linspace(0, 1, 100); &lt;br /&gt;
 % Componentes de la función para calcularnos el polinomio de Bernstein&lt;br /&gt;
 B0 = (1 - t).^3; &lt;br /&gt;
 B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
 B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
 B3 = t.^3; &lt;br /&gt;
 % Coordenadas de la curva de Bézier &lt;br /&gt;
 x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
 y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
 % Funciones para calcularnos las derivadas de la curva&lt;br /&gt;
 dx = gradient(x, t); &lt;br /&gt;
 dy = gradient(y, t); &lt;br /&gt;
 % Cálculo del vector tangente &lt;br /&gt;
 T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
 % Cálculo del vector normal (perpendiculares al tangente) &lt;br /&gt;
 N = [-T(2, :); T(1, :)]; &lt;br /&gt;
 % Funciones para calcularnos las segundas derivadas &lt;br /&gt;
 ddx = gradient(dx, t); &lt;br /&gt;
 ddy = gradient(dy, t); &lt;br /&gt;
 % Curvatura  &lt;br /&gt;
 curvatura = abs(dx .* ddy - dy .* ddx) ./ (dx.^2 + dy.^2).^(3/2);  &lt;br /&gt;
 % Radio de la circunferencia osculatriz&lt;br /&gt;
    if curvatura ~= 0&lt;br /&gt;
        R = 1 ./ curvatura;&lt;br /&gt;
    else&lt;br /&gt;
        R = Inf;&lt;br /&gt;
    end&lt;br /&gt;
 % Estructura de la animación &lt;br /&gt;
 figure; &lt;br /&gt;
 for i = 1:length(t) &lt;br /&gt;
     clf; &lt;br /&gt;
     plot(x, y, 'r--', 'LineWidth', 2); &lt;br /&gt;
     hold on; &lt;br /&gt;
     quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
     quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
     % Centro de la circunferencia osculatriz y gráfica&lt;br /&gt;
     center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
     theta = linspace(0, 2*pi, 100); &lt;br /&gt;
     circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
     circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
     plot(circle_x, circle_y, 'b','LineWidth', 1.25); &lt;br /&gt;
     title('Curva de Bézier: Tangente, Normal y Circunferencia Osculatriz'); &lt;br /&gt;
     xlabel('X');&lt;br /&gt;
     ylabel('Y');&lt;br /&gt;
     axis equal; grid on; &lt;br /&gt;
     pause(0.08);&lt;br /&gt;
  end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:frenet_3d_animationnn.gif|377px|miniaturadeimagen|'''Triedro de Frenet a lo largo de la curva''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Bezier_4.gif&amp;diff=82825</id>
		<title>Archivo:Bezier 4.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Bezier_4.gif&amp;diff=82825"/>
				<updated>2024-12-09T22:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82752</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82752"/>
				<updated>2024-12-09T21:34:14Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Curva bezier animacion.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:AnimacionMaxiiiii.gif|centro|marco|Animación que representa el triedro de Frenet a lo largo de la curva]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82750</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82750"/>
				<updated>2024-12-09T21:33:04Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Curva bezier animacion.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:AnimacionMaxiiiii.gif|centro|marco|Triedro de Frenet a lo largo de la curva]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82747</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82747"/>
				<updated>2024-12-09T21:31:56Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Curva bezier animacion.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:AnimacionMaxiiiii.gif|centro|miniaturadeimagen|Triedro de Frenet a lo largo de la curva]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82744</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82744"/>
				<updated>2024-12-09T21:30:28Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Curva bezier animacion.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:AnimacionMaxiiiii.gif|centro|marco|Triedro de Frenet a lo largo de la curva]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82743</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82743"/>
				<updated>2024-12-09T21:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
[[Archivo:Curva bezier animacion.gif|500px||miniaturadeimagen|Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:AnimacionMaxiiiii.gif|centro|marco|Triedro de Frenet a lo largo de la curva]]&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, la carcasa de un coche que cubre la rueda por encima para protegerla de posibles golpes.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Curva_bezier_animacion.gif&amp;diff=82741</id>
		<title>Archivo:Curva bezier animacion.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Curva_bezier_animacion.gif&amp;diff=82741"/>
				<updated>2024-12-09T21:25:08Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82682</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82682"/>
				<updated>2024-12-09T20:55:15Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Código y animación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|Se representa en el plano Z = 0 la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente y normal en 12 puntos equidistantes de la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|Se observa una curvatura baja en el medio (valores cercanos a t = 0,5) debido a que la curva de Bézier es más suave en la mitad de su trayectoria.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'r--', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'g', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'm', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'b', 'LineWidth', 1.25 ); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.08);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos.&lt;br /&gt;
[[Archivo:AnimacionBezierRobot.gif|miniaturadeimagen|centro|Movimiento de un brazo robótico mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
[[Archivo:image0.jpeg|miniaturadeimagen|centro|Trayectoria de un coche autónomo mediante las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
[[Archivo:Png-transparent-bezier-surface-bezier-curve-spline-others-angle-3d-computer-graphics-rectangle.png|miniaturadeimagen|centro|Modelización de una superficie mediante curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
[[Archivo:BernabeuBezier.png|miniaturadeimagen|centro|Diseño del Santiago Bernabéu usando las curvas de Bézier]]&lt;br /&gt;
&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas que mejoren la eficiencia del vehículo y la seguridad, aunque también para un mejor aprovechamiento de los materiales con los que se fabricará el vehículo. Por ejemplo, al modelar un coche para tener una mejor eficiencia aerodinámica, un menor coste de producción y un uso óptimo de los materiales necesarios.&lt;br /&gt;
[[Archivo:Cochecitobezier.png|miniaturadeimagen|centro|Coche fabricado a partir de las curvas de Bézier]]&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Figura5.jpg&amp;diff=82651</id>
		<title>Archivo:Figura5.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Figura5.jpg&amp;diff=82651"/>
				<updated>2024-12-09T20:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82578</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82578"/>
				<updated>2024-12-09T19:45:30Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA:''' Se representa en el plano &amp;lt;math&amp;gt;Z=0&amp;lt;/math&amp;gt; la curva cúbica (rojo) influida por la poligonal de control (azul).]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL:''' Haciendo uso de los datos anteriores, en esta gráfica se representa el campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en 12 puntos equidistantes en la curva.]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82563</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82563"/>
				<updated>2024-12-09T19:33:56Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el '''vector tangente, el vector normal y la circunferencia osculatriz''' a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de '''orden n''' definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica sería:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;br&amp;gt;  &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es '''perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;'''. Para obtener el vector normal, primero necesitas la '''segunda derivada''' de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Sustituyendo y simplificando, &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtendrá a partir de la siguiente ecuación: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es '''importante''' tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que '''tiene la misma tangente y curvatura que la curva en ese punto'''. Para hallar la ecuación de esta circunferencia necesitamos calcular '''tres variables''':&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la '''curvatura''' y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el '''radio de curvatura''', que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMENSIONAL EN FUNCIÓN DE T''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'  P0', '  P1', '  P2', '  P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82544</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82544"/>
				<updated>2024-12-09T19:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Vector Tangente (Primera Derivada) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el vector tangente, el vector normal y la circunferencia osculatriz a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de orden n definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica para una curva de Bézier de grado &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; es:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que '''indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia'''. Para obtenerlo, calcularemos la '''primera derivada''' de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir,&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;br&amp;gt;&amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la '''normalización''' de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector '''apunta en la dirección de la tangente a la curva'''.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;. Para obtener el vector normal, primero necesitas la segunda derivada de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt; y sustituyendo queda como: &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtiene a partir de la segunda derivada de la curva y la tangente: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; apunta en la dirección de la curvatura de la curva, y está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que tiene la misma tangente y curvatura que la curva en ese punto. Para hallar la ecuación de esta circunferencia necesitamos calcular tres variables:&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la curvatura y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el radio de curvatura, que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es: &amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagenapartado6.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82536</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82536"/>
				<updated>2024-12-09T19:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* 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. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   \kappa(t)= \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el vector tangente, el vector normal y la circunferencia osculatriz a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de orden n definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica para una curva de Bézier de grado &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; es:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia. Para obtenerlo, calcularemos la primera derivada de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir, &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la normalización de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Este vector apunta en la dirección de la tangente a la curva.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;. Para obtener el vector normal, primero necesitas la segunda derivada de la curva: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt; y sustituyendo queda como: &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtiene a partir de la segunda derivada de la curva y la tangente: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es importante tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; apunta en la dirección de la curvatura de la curva, y está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que tiene la misma tangente y curvatura que la curva en ese punto. Para hallar la ecuación de esta circunferencia necesitamos calcular tres variables:&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la curvatura y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el radio de curvatura, que se puede calcular como: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es: &amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la '''curva de Bézier tridimensional''' que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la '''curva poligonal''' simplemente se hace una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y se ha representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que se han elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Imagenapartado5.jpg|500px||miniaturadeimagen|Representación de la curva de Bézier tridimensional junto con la curva poligonal teniendo en cuenta que los puntos son no coplanarios]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
puntosControl = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = puntoBezier(puntosControl, t)&lt;br /&gt;
    n = size(puntosControl, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * puntosControl(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    puntosCurva(i, :) = puntoBezier(puntosControl, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de la curva poligonal (polígono de control)&lt;br /&gt;
plot3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(puntosControl(:,1), puntosControl(:,2), puntosControl(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(puntosControl(i,1), puntosControl(i,2), puntosControl(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 65);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(puntosControl, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, puntosControl(i,:));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparece también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;Como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva, en este caso como se ve en el desarrollo de la expresión.&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado 6.png|600px|miniaturadeimagen|'''REPRESENTACIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control en R3 (no coplanarios)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva de Bézier&lt;br /&gt;
curva = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curva = curva + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Triedro de Frenet&lt;br /&gt;
tangente = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangente, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalizar los vectores&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Preparar la animación&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curva(:,1), curva(:,2), curva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'bo--');&lt;br /&gt;
&lt;br /&gt;
% Animación del triedro de Frenet&lt;br /&gt;
title('Animación del Triedro de Frenet');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');&lt;br /&gt;
&lt;br /&gt;
% Longitud de los vectores para la visualización&lt;br /&gt;
longitud_vectores = 0.5;&lt;br /&gt;
&lt;br /&gt;
% Crear líneas para los vectores&lt;br /&gt;
linea_tangente = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
linea_normal = line([0 0], [0 0], [0 0], 'Color', 'c', 'LineWidth', 2);&lt;br /&gt;
linea_binormal = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Actualizar las líneas de los vectores&lt;br /&gt;
    set(linea_tangente, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*tangente(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*tangente(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*tangente(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_normal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*normal(i,1)], ...&lt;br /&gt;
                      'YData', [curva(i,2), curva(i,2) + longitud_vectores*normal(i,2)], ...&lt;br /&gt;
                      'ZData', [curva(i,3), curva(i,3) + longitud_vectores*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(linea_binormal, 'XData', [curva(i,1), curva(i,1) + longitud_vectores*binormal(i,1)], ...&lt;br /&gt;
                        'YData', [curva(i,2), curva(i,2) + longitud_vectores*binormal(i,2)], ...&lt;br /&gt;
                        'ZData', [curva(i,3), curva(i,3) + longitud_vectores*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el coeficiente binomial&lt;br /&gt;
function b = coefBin(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Función para calcular el polinomio de Bernstein&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = coefBin(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos Tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82433</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82433"/>
				<updated>2024-12-09T18:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   K(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el vector tangente, el vector normal y la circunferencia osculatriz a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de orden n definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica para una curva de Bézier de grado &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; es:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(4,2,0) \\ P_2=(0,2,0) \\ P_3=(4,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La curva de Bézier quedaría de la siguiente forma: &amp;lt;math&amp;gt; B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia. Para obtenerlo, calcularemos la primera derivada de la curva de Bézier mediante: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; Es decir, &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sustituyendo según los valores: &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la normalización de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;br&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt;''(unitario)''&amp;lt;/center&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Este vector apunta en la dirección de la tangente a la curva.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;. Para obtener el vector normal, primero necesitas la segunda derivada de la curva: &amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt; y sustituyendo queda como: &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtiene a partir de la segunda derivada de la curva y la tangente: &amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''. Es importante tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; apunta en la dirección de la curvatura de la curva, y está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que tiene la misma tangente y curvatura que la curva en ese punto. Para hallar la ecuación de esta circunferencia necesitamos calcular tres variables:&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la curvatura y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el radio de curvatura, que se puede calcular como: &amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;.&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es: &amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la curva de Bézier tridimensional que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la curva poligonal simplemente es una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y la hemos representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que hemos elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Apartadoooooooo5.jpg|600px|miniaturadeimagen|'''CURVA DE BÉZIER CÚBICA EN 3D''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definimos los puntos de control (no coplanarios)&lt;br /&gt;
P0 = [0, 0, 0];     &lt;br /&gt;
P1 = [2, 3, 1];    &lt;br /&gt;
P2 = [4, 1, 3];     &lt;br /&gt;
P3 = [6, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
matrizPuntos = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Generar los puntos de la curva&lt;br /&gt;
t = linspace(0, 1, 100);&lt;br /&gt;
puntosCurva = zeros(100, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:100&lt;br /&gt;
    puntosCurva(i, :) = puntosBezier(matrizPuntos, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(matrizPuntos(:,1), matrizPuntos(:,2), matrizPuntos(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(matrizPuntos(:,1), matrizPuntos(:,2), matrizPuntos(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Función para calcular un punto en la curva de Bézier&lt;br /&gt;
function P = puntosBezier(matrizPuntos, t)&lt;br /&gt;
    n = size(matrizPuntos, 1) - 1;  % Orden de la curva (número de puntos - 1)&lt;br /&gt;
    P = zeros(1, 3);  % Inicializar el punto resultante en 3D&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));  % Coeficiente de Bernstein&lt;br /&gt;
        P = P + b * matrizPuntos(i+1, :);  % Suma ponderada de los puntos de control&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado 6.png|600px|miniaturadeimagen|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82417</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=82417"/>
				<updated>2024-12-09T18:00:26Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios.''' ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar se seleccionan cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;i∈&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;{&amp;lt;/big&amp;gt; &amp;lt;math&amp;gt;0,1,2,...,n&amp;lt;/math&amp;gt; &amp;lt;big&amp;gt;}&amp;lt;/big&amp;gt; con &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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 permite adaptarla a distintas aplicaciones.&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, 3);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''===&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
La curvatura es una medida del cambio de dirección del vector tangente a una curva, cuanto más rápido cambia este a medida que nos desplazamos a lo largo de la curva, se dice que es más grande la curvatura. Se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. En este apartado se usará su parametrización para representar el gráfico de la curvatura de la curva en los cuatro siguientes puntos: &amp;lt;math&amp;gt; P_0=(0,0)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_1=(4,2)&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;P_2=(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Se utilizarán los polinomios de Berstein para poder calcular la posición de cada punto de la curva que se define como: &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Posteriormente será necesario calcular las derivadas de primer y segundo orden en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; tanto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como de &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; y se calculará la curvatura mediante la siguiente fórmula:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;   K(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^3;&lt;br /&gt;
    B1 = 3 * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = 3 * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^3;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.'''==&lt;br /&gt;
Para poder calcular el vector tangente, el vector normal y la circunferencia osculatriz a medida que nos movemos a lo largo de una curva de Bézier es importante entender cómo se define la curva y cómo obtener las propiedades geométricas pedidas a partir de las propiedades de las derivadas de la curva.&lt;br /&gt;
==='''Curva de Bézier y su derivada'''===&lt;br /&gt;
Como bien dice el enunciado, consideraremos una curva de Bézier de orden n definida por el conjunto de puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;}. La fórmula paramétrica para una curva de Bézier de grado &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; es:  &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; dónde &amp;lt;math&amp;gt;B_{i,n}(t)&amp;lt;/math&amp;gt; son los polinomios de Bernstein y &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el parámetro que varía entre 0 y 1. Los polinomios están dados por:&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
En este caso se han usado los siguientes puntos: &amp;lt;math&amp;gt;P_0=(0,0,0)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1=(4,2,0)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2=(0,2,0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;P_3=(4,4,0)&amp;lt;/math&amp;gt;, por lo tanto, la curva de Bézier sería: &amp;lt;math&amp;gt;B(t) = (1 − t)^{3}·P_0 + 3(1 − t)^{2}·t·P_1 + (1 − t)^{2}·t^{2}·P_2 + t^{3}·P_3 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Tangente (Primera Derivada)'''===&lt;br /&gt;
El vector tangente en un punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es el vector que indica la dirección en la que se mueve la curva cuando &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cambia. Para obtenerlo, calcularemos la primera derivada de la curva de Bézier &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^{n-1} (P_{i+1} - P_i)·B_{i,n-1}(t)\ &amp;lt;/math&amp;gt;. Es decir, &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·(P_1 - P_0) + 6(1 − t)·t·(P_2 - P_1) + 3t^{2}·(P_3 - P_2) &amp;lt;/math&amp;gt;. Sustituyendo según los valores: &amp;lt;math&amp;gt;B'(t) = 3(1 − t)^{2}·[4,2,0] + 6(1 − t)·t·[-4,0,,0] + 3t^{2}·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; es simplemente la normalización de &amp;lt;math&amp;gt;B'(t)&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;T(t) = \frac{B'(t)}{|B'(t)|}&amp;lt;/math&amp;gt; ''(unitario)''. Este vector apunta en la dirección de la tangente a la curva.&lt;br /&gt;
&lt;br /&gt;
==='''Vector Normal (Segunda Derivada)'''===&lt;br /&gt;
El vector normal es perpendicular al vector tangente y apunta en la dirección en la que la curva se &amp;quot;curva&amp;quot;. Para obtener el vector normal, primero necesitas la segunda derivada de la curva: &amp;lt;math&amp;gt; B''(t)=\sum_{i=0}^{n-2} (P_{i+2} - 2 P_{i+1} + P_i)·B_{i,n-2}(t)\ &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·(P_1 - P_0) + 6[2(1 − t)-2t]·(P_2 - P_1) + 6t·(P_3 - P_2) &amp;lt;/math&amp;gt; y sustituyendo queda como: &amp;lt;math&amp;gt;B''(t) = 6(1 − t)·[4,2,0] + 6(2-4t)·[-4,0,0] + 6t·[4,2,0] &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; se obtiene a partir de la segunda derivada de la curva y la tangente: &amp;lt;math&amp;gt; N(t) = \frac{B''(t)}{|B''(t)|}&amp;lt;/math&amp;gt; ''(unitario)''. Es importante tener en cuenta que &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; apunta en la dirección de la curvatura de la curva, y está asociado con el cambio de dirección del vector tangente.&lt;br /&gt;
&lt;br /&gt;
==='''Circunferencia Osculatriz'''===&lt;br /&gt;
La circunferencia osculatriz en un punto dado de la curva es el círculo que tiene la misma tangente y curvatura que la curva en ese punto. Para hallar la ecuación de esta circunferencia necesitamos calcular tres variables:&lt;br /&gt;
===='''Centro de la circunferencia osculatriz:'''====&lt;br /&gt;
Se puede obtener a partir de la curvatura y los vectores tangente y normal. Este centro está ubicado a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; del punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; es el radio de curvatura, que se puede calcular como: &amp;lt;math&amp;gt; R = \frac{1}{|B''(t)|}&amp;lt;/math&amp;gt;.&lt;br /&gt;
===='''Posición del centro'''====&lt;br /&gt;
El centro de la circunferencia está desplazado desde el punto &amp;lt;math&amp;gt;B(t)&amp;lt;/math&amp;gt; a lo largo del vector normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; a una distancia &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Entonces, la posición del centro de la circunferencia osculatriz es: &amp;lt;math&amp;gt;C(t) = B(t) + R·N(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
===='''Ecuación de la circunferencia:'''====&lt;br /&gt;
La ecuación de la circunferencia en el plano es: &amp;lt;math&amp;gt;||r(t) − C(t)|| = R&amp;lt;/math&amp;gt; dónde &amp;lt;math&amp;gt;r(t)&amp;lt;/math&amp;gt; es cualquier punto sobre la circunferencia.&lt;br /&gt;
&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''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.'''==&lt;br /&gt;
Para calcular y representar la curva de Bézier tridimensional que conecta los puntos {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} siendo entre ellos no coplanarios, hemos utilizado la curva de Bézier cúbica; extendiéndola al espacio 3D. La diferencia principal es que los puntos de control están en &amp;lt;math&amp;gt;ℝ^{3}&amp;lt;/math&amp;gt;, por lo que las coordenadas &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; de cada punto de la curva serán calculadas en función de esas dimensiones.&lt;br /&gt;
&lt;br /&gt;
Para el cálculo de la curva poligonal simplemente es una serie de líneas rectas que conectan los puntos de control {&amp;lt;math&amp;gt;P_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_3&amp;lt;/math&amp;gt;} y la hemos representado como un conjunto de segmentos de línea entre estos puntos.&lt;br /&gt;
&lt;br /&gt;
Los puntos que hemos elegido para este apartado son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0,0) \\ P_1=(2,3,1) \\ P_2=(4,1,3) \\ P_3=(6,4,0) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==='''Código y representación'''===&lt;br /&gt;
[[Archivo:Apartadoooooooo5.jpg|600px|miniaturadeimagen|'''CURVA DE BÉZIER CÚBICA EN 3D''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definimos los puntos de control (no coplanarios)&lt;br /&gt;
P0 = [0, 0, 0];     &lt;br /&gt;
P1 = [2, 3, 1];    &lt;br /&gt;
P2 = [4, 1, 3];     &lt;br /&gt;
P3 = [6, 4, 0];&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
matrizPuntos = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Generar los puntos de la curva&lt;br /&gt;
t = linspace(0, 1, 100);&lt;br /&gt;
puntosCurva = zeros(100, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:100&lt;br /&gt;
    puntosCurva(i, :) = puntosBezier(matrizPuntos, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(matrizPuntos(:,1), matrizPuntos(:,2), matrizPuntos(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(matrizPuntos(:,1), matrizPuntos(:,2), matrizPuntos(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(matrizPuntos(i,1), matrizPuntos(i,2), matrizPuntos(i,3), ...&lt;br /&gt;
        labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Función para calcular un punto en la curva de Bézier&lt;br /&gt;
function P = puntosBezier(matrizPuntos, t)&lt;br /&gt;
    n = size(matrizPuntos, 1) - 1;  % Orden de la curva (número de puntos - 1)&lt;br /&gt;
    P = zeros(1, 3);  % Inicializar el punto resultante en 3D&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));  % Coeficiente de Bernstein&lt;br /&gt;
        P = P + b * matrizPuntos(i+1, :);  % Suma ponderada de los puntos de control&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
==='''Curvatura:'''=== &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otras palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
==='''Torsión:'''===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
==='''Código y representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;:'''=== &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado 6.png|600px|miniaturadeimagen|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.'''==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
==='''Código y animación'''===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.'''==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad (en rojo) y el vector de la aceleración centrípeta (en verde) del Ferrari mientras recorre la pista con forma de curva de Bézier (en azul) para t∈(0,1)]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
=='''Aplicaciones de las curvas de Bézier en la ingeniería.'''==&lt;br /&gt;
Las curvas de Bézier son herramientas matemáticas que se utilizan en diversas áreas de la ingeniería por su capacidad para representar trayectorias, modelar superficies complejas y generar movimientos precisos. En la ingeniería podemos ver diferentes aplicaciones: &lt;br /&gt;
=== '''Modelización de trayectorias''' ===&lt;br /&gt;
Se utilizan para diseñar trayectorias óptimas en diversos sistemas automatizados como la robótica o los vehículos autónomos:&lt;br /&gt;
==== '''Robótica''' ====&lt;br /&gt;
En robótica, las curvas de Bézier se utilizan para planificar trayectorias de movimientos de brazos robóticos. Por ejemplo, un brazo robótico que ensambla las partes de un producto utiliza estas curvas para una trayectoria óptima en la que no haya colisiones o movimientos bruscos. &lt;br /&gt;
==== '''Vehículos autónomos''' ====&lt;br /&gt;
Las curvas de Bézier permiten calcular las rutas más seguras entre obstáculos en tiempo real. Por ejemplo, los vehículos tesla tienen una conducción autónoma donde utilizan estas curvas para planificar la trayectoria, optimizar el consumo energético y evitar colisiones.&lt;br /&gt;
=== '''Fabricación automatizada''' ===&lt;br /&gt;
En procesos como la impresión 3D y el corte por láser, las curvas de Bézier se utilizan para definir los patrones del movimiento que las herramientas deben seguir.&lt;br /&gt;
==== '''Impresión 3D''' ====&lt;br /&gt;
En la impresión 3D, las superficies y trayectorias generadas por las curvas de Bézier son necesarias para lograr precisión y minimizar las discontinuidades entre capas. Por ejemplo, si se desea imprimir una prótesis, las curvas de Bézier ayudan a modelar de forma precisa la forma necesaria para que pueda ajustarse a la persona que lo necesita.&lt;br /&gt;
==== '''Corte por láser''' ====&lt;br /&gt;
En el corte de piezas metálicas o textiles, las curvas de Bézier permiten definir las trayectorias que las herramientas deben seguir para cortar con precisión. Por ejemplo, una máquina que fabrica piezas de aeronaves puede emplear estas curvas para cortar bordes suaves y redondeados en chapas de aluminio.&lt;br /&gt;
=== '''Análisis de Superficies Complejas''' ===&lt;br /&gt;
Las curvas de Bézier son empleadas para la creación de modelos tridimensionales. Podemos diferenciar dos tipos de modelos: los de estructuras y los de transportes.&lt;br /&gt;
==== '''Construcción de estructuras''' ====&lt;br /&gt;
En arquitectura, las  curvas de Bézier ayudan a diseñar cubiertas de estadios o fachadas. Un ejemplo es el nuevo Santiago Bernabéu, cuya estructura curva ha sido diseñada mediante las curvas de Bézier.&lt;br /&gt;
==== '''Diseño de automóviles y aeronaves''' ====&lt;br /&gt;
Mediante programas &amp;quot;CAD&amp;quot; se emplean curvas y superficies de Bézier para diseñar formas aerodinámicas. Por ejemplo, al modelar un ala de avión, estas curvas garantizan una distribución suave de las fuerzas aerodinámicas.&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81564</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81564"/>
				<updated>2024-12-08T22:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
* '''Curvatura:''' &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Torsión:'''&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
* '''Representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; y el código empleado:''' &lt;br /&gt;
&amp;lt;br&amp;gt; Para su representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad y el vector de la aceleración centrípeta del Ferrari mientras recorre la pista a la velocidad escalar constante]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81563</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81563"/>
				<updated>2024-12-08T22:46:23Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de la curva de Bézier, su curvatura y torsión en función de  t  y el código empleado */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
=== '''Curvatura''' === &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
=== '''Torsión''' ===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
=== '''Representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; y el código empleado''' ===&lt;br /&gt;
&amp;lt;br&amp;gt; Para su representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad y el vector de la aceleración centrípeta del Ferrari mientras recorre la pista a la velocidad escalar constante]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81562</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81562"/>
				<updated>2024-12-08T22:45:42Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
=== '''Curvatura''' === &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
=== '''Torsión''' ===&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
=== '''Representación de la curva de Bézier, su curvatura y torsión en función de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; y el código empleado''' ===&lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad y el vector de la aceleración centrípeta del Ferrari mientras recorre la pista a la velocidad escalar constante]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81553</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=81553"/>
				<updated>2024-12-08T22:41:12Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación que representa el triedro de Frenet que se mueve a lo largo de la curva. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estos vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
=== '''Condiciones''' ===&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier, debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5). &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Cálculo analítico de la velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt;'''===&lt;br /&gt;
Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt; (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la animación 3D de la curva que se muestra más abajo, el programa nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Aceleración centrípeta y su vector director''' ===&lt;br /&gt;
Por otro lado, la aceleración centrípeta es: &amp;lt;math&amp;gt;a_c=\frac{ν_0^2}{r}&amp;lt;/math&amp;gt;. Sabiendo que: &amp;lt;math&amp;gt;r=\frac{1}{κ(t)}&amp;lt;/math&amp;gt;. Entonces: &amp;lt;math&amp;gt;a_c=ν_0^2·κ(t)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Si esta se multiplica por el vector normal unitario a la curva de Bézier, se obtiene el vector aceleración centrípeta en la animación (radial, siempre apuntando al centro de la curvatura y perpendicular a la velocidad, que es tangencial)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== '''Código y animación''' ===&lt;br /&gt;
[[Archivo:animacion_ferrari_bezier.gif|500px|miniaturadeimagen|derecha|Animación del vector velocidad y el vector de la aceleración centrípeta del Ferrari mientras recorre la pista a la velocidad escalar constante]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier y derivadas&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima segura&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
&lt;br /&gt;
% Mostrar resultado&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Crear figura&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curva de Bézier y animación del coche');&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
view(3); % Vista 3D&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Crear los vectores para animación&lt;br /&gt;
h_vel = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector velocidad&lt;br /&gt;
h_ac = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animar la curva&lt;br /&gt;
for i = 1:10:length(t_values) % Aumentar el paso para controlar la velocidad de animación&lt;br /&gt;
  t = t_values(i);&lt;br /&gt;
  % Posición, velocidad y aceleración centrípeta&lt;br /&gt;
  pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
&lt;br /&gt;
  % Dirección del vector normal (centrípeta)&lt;br /&gt;
  normal_vec = cross(Bp, Bpp);&lt;br /&gt;
  normal_vec = normal_vec / norm(normal_vec); % Normalizar&lt;br /&gt;
  ac = curvature(t, P0, P1, P2, P3) * v0^2 * normal_vec;&lt;br /&gt;
&lt;br /&gt;
  % Actualizar la posición de los vectores&lt;br /&gt;
  set(h_vel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
  set(h_ac, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
             'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
  % Pausa para crear la animación&lt;br /&gt;
  pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
legend('Curva Bézier', 'Velocidad', 'Aceleración centrípeta');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80266</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80266"/>
				<updated>2024-12-07T22:29:28Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación que representa el triedro de Frenet que se mueve a lo largo de la curva. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estas vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
[[Archivo:Apartado 7.gif|377px|miniaturadeimagen|derecha|'''Triedro de Frenet a lo largo de la curva ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo B (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
además se tendrán en cuenta los siguientes puntos de control: &amp;lt;math&amp;gt;P_0 =[0,0,0], P_1 = [30,50,5], P_2 = [60,−30,−10], P_3 = [100,0,0]&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Analizando el problema con la siguiente animación 3D de la curva, el programa también nos devuelve el valor máximo de velocidad escalar constante posible para que el Ferrari no se salga de la pista: &amp;lt;math&amp;gt;24,1569&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;m/s&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Puntos de control&lt;br /&gt;
P0 = [0, 0, 0];&lt;br /&gt;
P1 = [30, 50, 5];&lt;br /&gt;
P2 = [60, -30, -10];&lt;br /&gt;
P3 = [100, 0, 0];&lt;br /&gt;
&lt;br /&gt;
% Constantes&lt;br /&gt;
mu = 1.5; % Coeficiente de fricción&lt;br /&gt;
g = 9.81; % Aceleración gravitatoria (m/s^2)&lt;br /&gt;
&lt;br /&gt;
% Funciones de la curva de Bézier&lt;br /&gt;
function B = bezier(t, P0, P1, P2, P3)&lt;br /&gt;
  B = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bp = bezier_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = -3 * (1 - t)^2 * P0 + (3 * (1 - t)^2 - 6 * t * (1 - t)) * P1 ...&lt;br /&gt;
       + (6 * t * (1 - t) - 3 * t^2) * P2 + 3 * t^2 * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Bpp = bezier_double_prime(t, P0, P1, P2, P3)&lt;br /&gt;
  Bpp = 6 * (1 - t) * P0 + (6 - 12 * t) * P1 + (6 * t - 12 * t + 6) * P2 - 6 * t * P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function k = curvature(t, P0, P1, P2, P3)&lt;br /&gt;
  Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  Bpp = bezier_double_prime(t, P0, P1, P2, P3);&lt;br /&gt;
  cross_prod = norm(cross(Bp, Bpp));&lt;br /&gt;
  norm_Bp = norm(Bp);&lt;br /&gt;
  if norm_Bp == 0&lt;br /&gt;
    k = 0;&lt;br /&gt;
  else&lt;br /&gt;
    k = cross_prod / (norm_Bp^3);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Discretización de la curva&lt;br /&gt;
t_values = linspace(0, 1, 500);&lt;br /&gt;
curve = arrayfun(@(t) bezier(t, P0, P1, P2, P3), t_values, 'UniformOutput', false);&lt;br /&gt;
curve = cell2mat(curve')';&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curvatura en cada punto&lt;br /&gt;
curvatures = arrayfun(@(t) curvature(t, P0, P1, P2, P3), t_values);&lt;br /&gt;
&lt;br /&gt;
% Velocidad máxima&lt;br /&gt;
kappa_max = max(curvatures);&lt;br /&gt;
v0 = sqrt(mu * g / kappa_max);&lt;br /&gt;
disp(['Velocidad máxima segura (v0): ', num2str(v0), ' m/s']);&lt;br /&gt;
&lt;br /&gt;
% Visualización con animación&lt;br /&gt;
figure;&lt;br /&gt;
plot3(curve(1, :), curve(2, :), curve(3, :), 'b-', 'LineWidth', 2); % Curva de Bézier&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('X (m)');&lt;br /&gt;
ylabel('Y (m)');&lt;br /&gt;
zlabel('Z (m)');&lt;br /&gt;
title('Animación: Coche en la Curva de Bézier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Congelar los límites de los ejes&lt;br /&gt;
axis([min(curve(1, :)) max(curve(1, :)) ...&lt;br /&gt;
      min(curve(2, :)) max(curve(2, :)) ...&lt;br /&gt;
      min(curve(3, :)) max(curve(3, :))]);&lt;br /&gt;
&lt;br /&gt;
% Configuración inicial de los objetos animados&lt;br /&gt;
h_point = plot3(0, 0, 0, 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r'); % Punto del coche&lt;br /&gt;
h_velocity = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 2); % Vector de velocidad&lt;br /&gt;
h_accel = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 2); % Vector de aceleración centrípeta&lt;br /&gt;
&lt;br /&gt;
% Animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    pos = bezier(t, P0, P1, P2, P3);&lt;br /&gt;
    Bp = bezier_prime(t, P0, P1, P2, P3);&lt;br /&gt;
    norm_Bp = norm(Bp);&lt;br /&gt;
    ac = curvature(t, P0, P1, P2, P3) * v0^2 * (-Bp / norm_Bp);&lt;br /&gt;
&lt;br /&gt;
    % Actualizar posición&lt;br /&gt;
    set(h_point, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar vector velocidad&lt;br /&gt;
    set(h_velocity, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
        'UData', Bp(1), 'VData', Bp(2), 'WData', Bp(3));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar vector aceleración centrípeta&lt;br /&gt;
    set(h_accel, 'XData', pos(1), 'YData', pos(2), 'ZData', pos(3), ...&lt;br /&gt;
        'UData', ac(1), 'VData', ac(2), 'WData', ac(3));&lt;br /&gt;
&lt;br /&gt;
    pause(0.02); % Pausa para animación&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado_7.gif&amp;diff=80263</id>
		<title>Archivo:Apartado 7.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado_7.gif&amp;diff=80263"/>
				<updated>2024-12-07T22:27:46Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80110</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80110"/>
				<updated>2024-12-07T19:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación que representa el triedro de Frenet que se mueve a lo largo de la curva. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estas vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Y siendo B (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80105</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80105"/>
				<updated>2024-12-07T19:31:32Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Animación que representa el triedro de Frenet que se mueve a lo largo de la curva. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
Tras haber representado la curva, pasamos al triedro de Frenet que es un conjunto de tres vectores que se utilizan para describir el comportamiento geométrico de una curva en el espacio tridimensional. Estas vectores son: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; que hace referencia al vector tangente a lo largo de la curva &lt;br /&gt;
&amp;lt;br&amp;gt; el vector &amp;lt;math&amp;gt; \overrightarrow{n} &amp;lt;/math&amp;gt; que es el vector normal que esta orientado a la dirección en la que está curvando cada punto de la curva de &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; y por último, el vector &amp;lt;math&amp;gt; \overrightarrow{BN} &amp;lt;/math&amp;gt; que es es vector binormal y es perpendicular a &amp;lt;math&amp;gt; \overrightarrow{T} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \overrightarrow{N} &amp;lt;/math&amp;gt;, y  se calcula tal que : &amp;lt;math&amp;gt; \overrightarrow{BN} = {\overrightarrow{T} \times \overrightarrow{N}} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Una vez definido lo que es y los vectores que lo componen, se representa, gracias al programa MATLAB, una animación del Triedro de Frenet a lo largo de la curva, dónde se utilizó el siguiente código para su realización: &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Frenet Trihedral Animation for 3D Bézier Curve&lt;br /&gt;
&lt;br /&gt;
% Control points in 3D space (non-coplanar)&lt;br /&gt;
P = [0 0 0; 1 2 1; 3 1 2; 4 3 3];&lt;br /&gt;
&lt;br /&gt;
% Number of points for smooth curve&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Function to compute binomial coefficient&lt;br /&gt;
function b = binomial_coef(n, k)&lt;br /&gt;
    b = factorial(n) / (factorial(k) * factorial(n-k));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Function to compute Bernstein polynomial&lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = binomial_coef(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Bézier curve points&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% First derivative&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Second derivative&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Compute Frenet frame&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
normal = cross(d2, d1) ./ (vecnorm(d1, 2, 2).^2);&lt;br /&gt;
binormal = cross(tangent, normal);&lt;br /&gt;
&lt;br /&gt;
% Normalize vectors&lt;br /&gt;
normal = normal ./ vecnorm(normal, 2, 2);&lt;br /&gt;
binormal = binormal ./ vecnorm(binormal, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Prepare animation&lt;br /&gt;
figure('Position', [100, 100, 1000, 800]);&lt;br /&gt;
axis equal;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Plot Bézier curve&lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% Animation of Frenet trihedral&lt;br /&gt;
title('Animación Triedro de Frenet');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
&lt;br /&gt;
% Vector length for visualization&lt;br /&gt;
vector_length = 0.3;&lt;br /&gt;
&lt;br /&gt;
% Create lines for vectors&lt;br /&gt;
tangent_line = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);&lt;br /&gt;
normal_line = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);&lt;br /&gt;
binormal_line = line([0 0], [0 0], [0 0], 'Color', 'm', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Animation&lt;br /&gt;
view(80, 60);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    % Update vector lines&lt;br /&gt;
    set(tangent_line, 'XData', [curve(i,1), curve(i,1) + vector_length*tangent(i,1)], ...&lt;br /&gt;
                      'YData', [curve(i,2), curve(i,2) + vector_length*tangent(i,2)], ...&lt;br /&gt;
                      'ZData', [curve(i,3), curve(i,3) + vector_length*tangent(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(normal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*normal(i,1)], ...&lt;br /&gt;
                     'YData', [curve(i,2), curve(i,2) + vector_length*normal(i,2)], ...&lt;br /&gt;
                     'ZData', [curve(i,3), curve(i,3) + vector_length*normal(i,3)]);&lt;br /&gt;
    &lt;br /&gt;
    set(binormal_line, 'XData', [curve(i,1), curve(i,1) + vector_length*binormal(i,1)], ...&lt;br /&gt;
                       'YData', [curve(i,2), curve(i,2) + vector_length*binormal(i,2)], ...&lt;br /&gt;
                       'ZData', [curve(i,3), curve(i,3) + vector_length*binormal(i,3)]);&lt;br /&gt;
   &lt;br /&gt;
    drawnow;&lt;br /&gt;
    pause(0.05);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
La velocidad escalar constante &amp;lt;math&amp;gt;ν_0&amp;lt;/math&amp;gt; que debe mantener un Ferrari F2004 para no salirse de la pista en ningún punto de un circuito con el trazado de una curva de Bézier debe ser tal que la fuerza centrípeta &amp;lt;math&amp;gt;F_c=mκν^2&amp;lt;/math&amp;gt; no exceda la fuerza máxima de fricción &amp;lt;math&amp;gt;F_{\text{fricción}}=μmg&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; la masa del Ferrari, &amp;lt;math&amp;gt;κ&amp;lt;/math&amp;gt; la curvatura de la pista, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; la aceleración de la gravedad y &amp;lt;math&amp;gt;μ&amp;lt;/math&amp;gt; el coeficiente de fricción entre los neumáticos y la pista (se asume igual a 1.5).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Esto implica que &amp;lt;math&amp;gt;F_c≤F_{\text{fricción}}→κν^2≤μg&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Para que la velocidad sea constante y segura se tomará el valor máximo de &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; a lo largo del intervalo &amp;lt;math&amp;gt;t∈[0,1]&amp;lt;/math&amp;gt;. Así pues: &amp;lt;math&amp;gt;ν_0≤\sqrt{\frac{μg}{κ_{\text{máx}}}}&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Como ya se ha mencionado en apartados anteriores, para calcular la curvatura &amp;lt;math&amp;gt;κ(t)&amp;lt;/math&amp;gt; se necesitan la primera y la segunda derivada de &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Y siendo B (por la fórmula general de las curvas de Bézier): &amp;lt;math&amp;gt;B=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80049</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80049"/>
				<updated>2024-12-07T18:27:21Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORSIÓN DE LA CURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80048</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80048"/>
				<updated>2024-12-07T18:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORIÓN DE LACURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80042</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80042"/>
				<updated>2024-12-07T18:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
[Archivo:Apartado 6.png|377px|miniaturadeimagen|derecha|'''REPRESENATCIÓN DE LA CURVATURA Y LA TORIÓN DE LACURVA TRIDIMMENSIONAL EN FUNCIÓN DE T ''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Visualización de la curva de Bézier 3D&lt;br /&gt;
&lt;br /&gt;
% Puntos de control en el espacio tridimensional (no coplanarios)&lt;br /&gt;
P = [0 0 0; 2 3 1; 4 1 3; 6 4 0];&lt;br /&gt;
&lt;br /&gt;
% Número de puntos para la curva&lt;br /&gt;
n = 100;&lt;br /&gt;
t = linspace(0, 1, n);&lt;br /&gt;
&lt;br /&gt;
% Función para trabajar con el polinomio de Bernstein &lt;br /&gt;
function b = bernstein(i, n, t)&lt;br /&gt;
    b = nchoosek(n, i) * (t.^i) .* ((1-t).^(n-i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Inicializamos la curva de Bézier&lt;br /&gt;
curve = zeros(n, 3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos los puntos de la curva de Bézier&lt;br /&gt;
for i = 1:size(P, 1)&lt;br /&gt;
    curve = curve + bernstein(i-1, size(P, 1)-1, t)' .* P(i, :);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Primera derivada&lt;br /&gt;
d1 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-1&lt;br /&gt;
    d1 = d1 + (size(P, 1)-1) * bernstein(i-1, size(P, 1)-2, t)' .* (P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Segunda derivada&lt;br /&gt;
d2 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-2&lt;br /&gt;
    d2 = d2 + (size(P, 1)-1)*(size(P, 1)-2) * bernstein(i-1, size(P, 1)-3, t)' .* ...&lt;br /&gt;
        (P(i+2, :) - 2*P(i+1, :) + P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Tercera derivada (para calcular la torsión)&lt;br /&gt;
d3 = zeros(n, 3);&lt;br /&gt;
for i = 1:size(P, 1)-3&lt;br /&gt;
    d3 = d3 + (size(P, 1)-1)*(size(P, 1)-2)*(size(P, 1)-3) * bernstein(i-1, size(P, 1)-4, t)' .* ...&lt;br /&gt;
        (P(i+3, :) - 3*P(i+2, :) + 3*P(i+1, :) - P(i, :));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos la curvatura&lt;br /&gt;
tangent = d1 ./ vecnorm(d1, 2, 2);&lt;br /&gt;
curvature = vecnorm(cross(d1, d2), 2, 2) ./ (vecnorm(d1, 2, 2).^3);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la torsión&lt;br /&gt;
torsion = zeros(n, 1);&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    torsion(i) = dot(cross(d1(i,:), d2(i,:)), d3(i,:)) / norm(cross(d1(i,:), d2(i,:)))^2;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Trazamos la gráfica&lt;br /&gt;
figure('Position', [100, 100, 1200, 800]);&lt;br /&gt;
&lt;br /&gt;
% Curva 3D con polígono de control&lt;br /&gt;
subplot(2, 2, [1 3]);&lt;br /&gt;
% Curva de Bézier &lt;br /&gt;
plot3(curve(:,1), curve(:,2), curve(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Polígono de control&lt;br /&gt;
plot3(P(:,1), P(:,2), P(:,3), 'ro-', 'MarkerFaceColor', 'r');&lt;br /&gt;
title('Curva de Bézier');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Z');&lt;br /&gt;
grid on;&lt;br /&gt;
view(45, 30);&lt;br /&gt;
&lt;br /&gt;
% Gráfico de curvatura&lt;br /&gt;
subplot(2, 2, 2);&lt;br /&gt;
plot(t, curvature, 'b-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura');&lt;br /&gt;
xlabel('t'); ylabel('Curvatura');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Gráfico de torsión&lt;br /&gt;
subplot(2, 2, 4);&lt;br /&gt;
plot(t, torsion, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Torsión');&lt;br /&gt;
xlabel('t'); ylabel('Torsión');&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
sgtitle('Curvatura y torsión en función de t');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado_6.png&amp;diff=80033</id>
		<title>Archivo:Apartado 6.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado_6.png&amp;diff=80033"/>
				<updated>2024-12-07T18:14:36Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80032</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80032"/>
				<updated>2024-12-07T18:13:46Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso como se ve en el desarrollo de la expresión. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80031</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80031"/>
				<updated>2024-12-07T18:13:03Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Dónde &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; vuelve a ser la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada de la curva en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;, además, aparec también &amp;lt;math&amp;gt; \mathbf{B}'''(t) &amp;lt;/math&amp;gt; que sería la tercera derivada de la curva. &lt;br /&gt;
&amp;lt;br&amp;gt;También como se puede observar en la expresión, hay un producto vectorial por un producto escalar, eso se convierte en un producto mixto y se resuelve como el determinante de las tres derivadas de la curva en este caso. &lt;br /&gt;
&amp;lt;br&amp;gt; Para la representación, se ha utilizado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80013</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80013"/>
				<updated>2024-12-07T17:57:23Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) · \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80008</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80008"/>
				<updated>2024-12-07T17:56:05Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\mathbf{B}'(t) \times \mathbf{B}''(t) * \mathbf{B}'''(t)}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80006</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80006"/>
				<updated>2024-12-07T17:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\dot[\mathbf{B}'(t) \times \mathbf{B}''(t), \mathbf{B}'''(t)]}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} = \frac{det( \mathbf{B}'(t), \mathbf{B}''(t), \mathbf{B}'''(t))}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80004</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=80004"/>
				<updated>2024-12-07T17:49:15Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \tau(t) = \frac{\dot[\mathbf{B}'(t) \times \mathbf{B}''(t), \mathbf{B}'''(t)]}{|\mathbf{B}'(t) \times \mathbf{B}''(t)|^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79994</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79994"/>
				<updated>2024-12-07T17:33:02Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \[Tau](t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
BPrime[t_] := D[B[t], t]  (* Primera derivada B'(t) *)&lt;br /&gt;
BDoublePrime[t_] := D[B[t], {t, 2}]  (* Segunda derivada B''(t) *)&lt;br /&gt;
BTriplePrime[t_] := D[B[t], {t, 3}]  (* Tercera derivada B'''(t) *)&lt;br /&gt;
&lt;br /&gt;
(* Producto cruzado entre B'(t) y B''(t) *)&lt;br /&gt;
crossProduct = Cross[BPrime[t], BDoublePrime[t]]&lt;br /&gt;
&lt;br /&gt;
(* Torsión de la curva B(t), usando la notación \[Tau] *)&lt;br /&gt;
\[Tau][t_] := (Dot[crossProduct, BTriplePrime[t]]) / (Norm[crossProduct]^2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79992</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79992"/>
				<updated>2024-12-07T17:32:11Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times C\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \Tau(t)&amp;lt;/math&amp;gt;) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; (* Derivadas de la curva *)&lt;br /&gt;
BPrime[t_] := D[B[t], t]  (* Primera derivada B'(t) *)&lt;br /&gt;
BDoublePrime[t_] := D[B[t], {t, 2}]  (* Segunda derivada B''(t) *)&lt;br /&gt;
BTriplePrime[t_] := D[B[t], {t, 3}]  (* Tercera derivada B'''(t) *)&lt;br /&gt;
&lt;br /&gt;
(* Producto cruzado entre B'(t) y B''(t) *)&lt;br /&gt;
crossProduct = Cross[BPrime[t], BDoublePrime[t]]&lt;br /&gt;
&lt;br /&gt;
(* Torsión de la curva B(t), usando la notación \[Tau] *)&lt;br /&gt;
\[Tau][t_] := (Dot[crossProduct, BTriplePrime[t]]) / (Norm[crossProduct]^2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79984</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79984"/>
				<updated>2024-12-07T17:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión(&amp;lt;math&amp;gt; \[Tau](t) que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79936</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79936"/>
				<updated>2024-12-07T15:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79935</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79935"/>
				<updated>2024-12-07T15:17:27Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79934</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79934"/>
				<updated>2024-12-07T15:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79933</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79933"/>
				<updated>2024-12-07T15:14:20Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez la curva de Bézier tridimensional junto a su curva poligonal han sido representadas, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, que en otros palabras sería cuánto cambia la curvatura en el plano, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt; Por otro lado, encontramos la torsión que mide cuánto cambia la orientación del plano tangente a lo largo de la curva, y sigue la siguiente expresión: &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; torsion[t_] := (Dot[crossProduct, BTriplePrime[t]]) / (Norm[crossProduct]^2)=(det|\mathbf{B}'(t),\mathbf{B}''(t), \mathbf{B}'''(t)|)/(Norm[crossProduct]^2) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79927</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79927"/>
				<updated>2024-12-07T14:50:07Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79926</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79926"/>
				<updated>2024-12-07T14:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;left&amp;gt; Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79924</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79924"/>
				<updated>2024-12-07T14:49:07Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;left&amp;gt;Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79900</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79900"/>
				<updated>2024-12-07T14:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale a la norma del producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79898</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79898"/>
				<updated>2024-12-07T14:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;br&amp;gt; Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| &amp;lt;/math&amp;gt; equivale al producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79897</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79897"/>
				<updated>2024-12-07T14:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;.&lt;br /&gt;
Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| equivale al producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79896</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79896"/>
				<updated>2024-12-07T14:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; \mathbf{B}'(t) &amp;lt;/math&amp;gt; la primera derivada de la curva en función de &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; \mathbf{B}''(t) &amp;lt;/math&amp;gt; la segunda derivada en funcón de &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt;&lt;br /&gt;
Por tanto , &amp;lt;math&amp;gt; \|\mathbf{B}'(t) \times \mathbf{B}''(t)\| equivale al producto mixto de la primera y la segunda derivada de la curva &amp;lt;math&amp;gt; \mathbf{B}(t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79862</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79862"/>
				<updated>2024-12-07T13:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
Empezando por la curvatura (&amp;lt;math&amp;gt;\kappa(t)&amp;lt;/math&amp;gt;), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión:&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79861</id>
		<title>Curvas de Bézier Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Curvas_de_B%C3%A9zier_Grupo_2&amp;diff=79861"/>
				<updated>2024-12-07T13:52:06Z</updated>
		
		<summary type="html">&lt;p&gt;Maximiliano.rruiz: /* Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro t. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Curvas de Bézier (Grupo 2) | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC24/25|2024-25]] |Marta Escaso Camacho&amp;lt;br /&amp;gt; Maximiliano Rodríguez Ruiz &amp;lt;br /&amp;gt;Beatrice Laval González&amp;lt;br /&amp;gt;Alejandro Villaverde Carrascosa &amp;lt;br /&amp;gt; Daniel Pérez Cámara}}&lt;br /&gt;
[[Categoría:Curso ICE]]&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC24/25]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Las curvas de Bézier de orden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; están definidas por los puntos de control &amp;lt;math&amp;gt;P_0,P_1,...,P_n&amp;lt;/math&amp;gt; y se pueden expresar mediante la siguiente fórmula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B(t)=\sum_{i=0}^n B_{i,n}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde \(B_{i,n}(t)\) son los polinomios de Bernstein, dados por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para \(t \in [0, 1]\), y donde \(\binom{n}{i}\) es el coeficiente binomial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Representación de la curva de Bézier cúbica para &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;, junto con la curva poligonal que conecta cuatro puntos de control coplanarios. ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar seleccionamos cuatro puntos de control coplanarios (&amp;lt;math&amp;gt;P_0,P_1,P_2,P_3&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt; \;\left\{\begin{matrix}P_0=(0,0) \\ P_1=(4,2) \\ P_2=(0,2) \\ P_3=(4,4) \end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para calcular los puntos de la curva se utilizan los polinomios de Bernstein para cada valor de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_0=(1-t)^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_1=3(1-t)^2·t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_2=3(1-t)·t^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; B_3=t^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se calcula la posición del punto en la curva mediante una combinación lineal de los puntos de control ponderados por los polinomios de Bernstein.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos1.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CÚBICA''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Poligonal de control&lt;br /&gt;
plot3([ P0(1), P1(1), P2(1), P3(1) ], [ P0(2), P1(2), P2(2), P3(2) ], ...&lt;br /&gt;
      [ P0(3), P1(3), P2(3), P3(3) ], 'bo--', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Curva de Bézier&lt;br /&gt;
plot3(puntosCurva(:,1), puntosCurva(:,2), puntosCurva(:,3), 'r-', 'LineWidth', 2.5);&lt;br /&gt;
&lt;br /&gt;
% Se pone título a la gráfica&lt;br /&gt;
title('Curva de Bézier cúbica');&lt;br /&gt;
% Se pone nombre a los ejes&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación del campo tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; y del campo normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt; en varios puntos de la curva.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
El vector tangente &amp;lt;math&amp;gt;T(t)&amp;lt;/math&amp;gt; es la derivada de la curva \(B(t)\) respecto al parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'(t)=\sum_{i=0}^3 B_{i,3}(t) P_i\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde la derivada del polinomio de Bernstein es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; B'_{i,3}(t) = \binom{3}{i} [it^{i-1} (1-t)^{3-i} - (3-i)t^i (1-t)^{2-i}]\ &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El vector tangente se obtiene normalizando la derivada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;T(t)=\frac{B'(t)}{||B'(t)||} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;||B'(t)||=\sqrt{(B'_x(t))^2 + (B'_y(t))^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Cálculo del Vector Normal &amp;lt;math&amp;gt;N(t)&amp;lt;/math&amp;gt;:'''&lt;br /&gt;
&lt;br /&gt;
Como el vector normal es ortogonal al vector tangente, lo calculamos haciendo uso del tensor rotación &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; con eje unitario y ángulo 90º (&amp;lt;math&amp;gt;\frac{\pi}{2}&amp;lt;/math&amp;gt; radianes).&lt;br /&gt;
&lt;br /&gt;
La fórmula general para una rotación alrededor de un eje &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; unitario con un ángulo &amp;lt;math&amp;gt;θ&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e,θ)=cos(θ)·I+(1-cos(θ))(e⊗e)+sin(θ)·[e&amp;lt;/math&amp;gt;x&amp;lt;math&amp;gt;]&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particularizando para &amp;lt;math&amp;gt; e_z=\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=0·I+(1-0)· \begin{pmatrix} 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix} + 1· \begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 0 \end{pmatrix}=\begin{pmatrix} 0 &amp;amp; -1 &amp;amp; 0\\ 1 &amp;amp; 0 &amp;amp; 0\\ 0 &amp;amp; 0 &amp;amp; 1 \end{pmatrix}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para rotaciones en el plano XY, es decir, 2D:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; R(e_z,90º)=\begin{pmatrix} 0 &amp;amp; -1 \\ 1 &amp;amp; 0 \end{pmatrix} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FiguraCampos2.jpg|377px|miniaturadeimagen|derecha|'''CURVA DE BÉZIER CON CAMPOS TANGENTE Y NORMAL''']]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Vector de puntos de control coplanarios&lt;br /&gt;
P = [0, 0; 4, 2; 0, 2; 4, 4]; &lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
t = linspace(0, 1, numPuntos); % Valores de t entre 0 y 1&lt;br /&gt;
B = zeros(numPuntos, 2); % Inicializar B con la matriz nula&lt;br /&gt;
dB = zeros(numPuntos, 2);  % Derivada de la curva&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la curva y derivada&lt;br /&gt;
for i = 0:n&lt;br /&gt;
    coefBin = nchoosek(n, i); % Coeficiente binomial&lt;br /&gt;
    Bernstein = coefBin * (t.^i) .* ((1-t).^(n-i)); % Polinomio de Bernstein&lt;br /&gt;
    BernsteinDerivada = coefBin * (i * t.^(i-1) .* (1-t).^(n-i) - (n-i) * t.^i .* (1-t).^(n-i-1)); % Derivada&lt;br /&gt;
    &lt;br /&gt;
    B = B + Bernstein' * P(i+1, :); % Curva de Bézier&lt;br /&gt;
    dB = dB + BernsteinDerivada' * P(i+1, :); % Derivada&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Obtenemos el vector tangente&lt;br /&gt;
T = dB ./ vecnorm(dB, 2, 2);&lt;br /&gt;
&lt;br /&gt;
% Definimos la matriz de rotación para 90º alrededor del eje Z&lt;br /&gt;
R = [0 -1; 1 0];&lt;br /&gt;
&lt;br /&gt;
% Cálculo del vector normal usando R&lt;br /&gt;
N = (R * T')';&lt;br /&gt;
&lt;br /&gt;
% Puntos de la curva para dibujar vectores tangentes y normales&lt;br /&gt;
puntos = round(linspace(1, numPuntos, 12)); % Seleccionamos 12 puntos&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva y la poligonal de control&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
plot(P(:, 1), P(:, 2), 'bo--', 'LineWidth', 1.5); % Poligonal de control&lt;br /&gt;
plot(B(:, 1), B(:, 2), 'r-', 'LineWidth', 2.5);    % Curva Bézier&lt;br /&gt;
&lt;br /&gt;
% Graficar vectores tangentes y normales&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), T(puntos, 1), T(puntos, 2), 0.3, 'g', 'LineWidth', 1); % Tangentes (en verde)&lt;br /&gt;
quiver(B(puntos, 1), B(puntos, 2), N(puntos, 1), N(puntos, 2), 0.3, 'm', 'LineWidth', 1); % Normales (en magenta)&lt;br /&gt;
title('Campos tangente y normal');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
legend('Poligonal de control', 'Curva Bézier', 'Tangentes', 'Normales');&lt;br /&gt;
grid on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
La curvatura de una curva describe cuánto y cómo cambia la dirección de la tangente de la curva en cada punto. Esta propiedad se puede expresar como una función del parámetro &amp;quot;t&amp;quot;, que generalmente parametriza la curva. &lt;br /&gt;
En este apartado representaremos el gráfico de la curvatura de la curva en función del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Definimos la curva &amp;lt;math&amp;gt; B(t) = (x(t), y(t)) &amp;lt;/math&amp;gt;. Para calcular la curvatura de una curva se utiliza la siguiente ecuación:&lt;br /&gt;
 &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  \kappa(t) = \frac{|x'(t)y''(t)-y'(t)x''(t)|}{((x'(t))^2 + (y'(t))^2)^\frac{3}{2}}&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Foto apartado 3.jpg|500px|miniaturadeimagen|'''CURVATURA DE LA CURVA EN FUNCIÓN DE t''']]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Selección de puntos de control coplanarios&lt;br /&gt;
P0 = [0, 0, 0];    &lt;br /&gt;
P1 = [4, 2, 0];&lt;br /&gt;
P2 = [0, 2, 0];&lt;br /&gt;
P3 = [4, 4, 0];&lt;br /&gt;
n = 3; % Orden de la curva de Bézier&lt;br /&gt;
&lt;br /&gt;
% Puntos para la curva de Bézier&lt;br /&gt;
numPuntos = 100;&lt;br /&gt;
&lt;br /&gt;
% Valores de t entre 0 y 1&lt;br /&gt;
t = linspace(0, 1, numPuntos);&lt;br /&gt;
&lt;br /&gt;
% Inicializar los puntos de la curva Bézier&lt;br /&gt;
puntosCurva = zeros(numPuntos, n);&lt;br /&gt;
&lt;br /&gt;
% Calcular los puntos de Bézier&lt;br /&gt;
for i = 1:numPuntos&lt;br /&gt;
    % Polinomio de Bernstein&lt;br /&gt;
    B0 = (1-t(i))^n;&lt;br /&gt;
    B1 = n * (1-t(i))^2 * t(i);&lt;br /&gt;
    B2 = n * (1-t(i)) * t(i)^2;&lt;br /&gt;
    B3 = t(i)^n;&lt;br /&gt;
    &lt;br /&gt;
    puntosCurva(i,:) = B0*P0 + B1*P1 + B2*P2 + B3*P3;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Derivar las coordenadas de la curva con respecto a t&lt;br /&gt;
% Aproximación por diferencias finitas&lt;br /&gt;
dx = gradient(puntosCurva(:, 1), t); % Primera derivada de x&lt;br /&gt;
dy = gradient(puntosCurva(:, 2), t); % Primera derivada de y&lt;br /&gt;
d2x = gradient(dx, t);     % Segunda derivada de x&lt;br /&gt;
d2y = gradient(dy, t);     % Segunda derivada de y&lt;br /&gt;
&lt;br /&gt;
% Calcular la curvatura usando la fórmula&lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ ((dx.^2 + dy.^2).^(3/2));&lt;br /&gt;
&lt;br /&gt;
% Graficar la curvatura en función del parámetro t&lt;br /&gt;
plot(t, curvatura, 'r-', 'LineWidth', 2);&lt;br /&gt;
title('Curvatura de la curva de Bézier en función de t');&lt;br /&gt;
xlabel('Eje x');&lt;br /&gt;
ylabel('Eje y');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Animación del vector tangente, el vector normal y la circunferencia osculatriz asociados a cada punto de la curva de Bézier.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Puntos de control coplanares &lt;br /&gt;
P0 = [0, 0,0]; &lt;br /&gt;
P1 = [4, 2,0]; &lt;br /&gt;
P2 = [0, 2,0]; &lt;br /&gt;
P3 = [4, 4,0]; &lt;br /&gt;
% Parámetro t (de 0 a 1) &lt;br /&gt;
t = linspace(0, 1, 100); &lt;br /&gt;
% Polinomios de Bernstein &lt;br /&gt;
B0 = (1 - t).^3; &lt;br /&gt;
B1 = 3 * t .* (1 - t).^2; &lt;br /&gt;
B2 = 3 * t.^2 .* (1 - t); &lt;br /&gt;
B3 = t.^3; &lt;br /&gt;
% Coordenadas de la curva de Bézier &lt;br /&gt;
x = B0 * P0(1) + B1 * P1(1) + B2 * P2(1) + B3 * P3(1); &lt;br /&gt;
y = B0 * P0(2) + B1 * P1(2) + B2 * P2(2) + B3 * P3(2); &lt;br /&gt;
% Derivadas de la curva de Bézier &lt;br /&gt;
dx = gradient(x, t); &lt;br /&gt;
dy = gradient(y, t); &lt;br /&gt;
% Vectores tangentes normalizados &lt;br /&gt;
T = [dx; dy] ./ sqrt(dx.^2 + dy.^2); &lt;br /&gt;
% Vectores normales (perpendiculares al tangente) &lt;br /&gt;
N = [-T(2, :); T(1, :)]; &lt;br /&gt;
% Segunda derivada de la curva &lt;br /&gt;
d2x = gradient(dx, t); &lt;br /&gt;
d2y = gradient(dy, t); &lt;br /&gt;
% Curvatura &lt;br /&gt;
curvatura = abs(dx .* d2y - dy .* d2x) ./ (dx.^2 + dy.^2).^(3/2); &lt;br /&gt;
% Radio de curvatura &lt;br /&gt;
R = 1 ./ curvatura; &lt;br /&gt;
% Animación &lt;br /&gt;
figure; &lt;br /&gt;
for i = 1:length(t) &lt;br /&gt;
    clf; &lt;br /&gt;
    plot(x, y, 'b-', 'LineWidth', 2); hold on; &lt;br /&gt;
    quiver(x(i), y(i), T(1, i), T(2, i), 0.5, 'r', 'LineWidth', 1.5); % Tangente &lt;br /&gt;
    quiver(x(i), y(i), N(1, i), N(2, i), 0.5, 'g', 'LineWidth', 1.5); % Normal &lt;br /&gt;
    % Circunferencia osculatriz &lt;br /&gt;
    center = [x(i), y(i)] + R(i) * N(:, i)'; &lt;br /&gt;
    theta = linspace(0, 2*pi, 100); &lt;br /&gt;
    circle_x = center(1) + R(i) * cos(theta); &lt;br /&gt;
    circle_y = center(2) + R(i) * sin(theta); &lt;br /&gt;
    plot(circle_x, circle_y, 'm--'); &lt;br /&gt;
    title('Animación: Vectores y Circunferencia Osculatriz'); &lt;br /&gt;
    xlabel('x'); ylabel('y'); &lt;br /&gt;
    axis equal; grid on; &lt;br /&gt;
    pause(0.1);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==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.==&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Curva de Bézier Cúbica en 3D&lt;br /&gt;
% Demuestra una curva de Bézier con puntos de control no coplanares&lt;br /&gt;
&lt;br /&gt;
% Definición de puntos de control en el espacio 3D&lt;br /&gt;
% Elegimos puntos que claramente no están en el mismo plano&lt;br /&gt;
P0 = [0, 0, 0];     % Origen&lt;br /&gt;
P1 = [2, 3, 1];     % Primer punto de control con elevación&lt;br /&gt;
P2 = [4, 1, 3];     % Segundo punto de control con diferente elevación&lt;br /&gt;
P3 = [6, 4, 0];     % Punto final con variación en z&lt;br /&gt;
&lt;br /&gt;
% Matriz de puntos de control&lt;br /&gt;
controlPoints = [P0; P1; P2; P3];&lt;br /&gt;
&lt;br /&gt;
% Función para calcular punto de Bézier&lt;br /&gt;
function P = bezierPoint(controlPoints, t)&lt;br /&gt;
    n = size(controlPoints, 1) - 1;&lt;br /&gt;
    P = zeros(1, 3);&lt;br /&gt;
    for i = 0:n&lt;br /&gt;
        b = nchoosek(n, i) * (t^i) * ((1-t)^(n-i));&lt;br /&gt;
        P = P + b * controlPoints(i+1, :);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Generar puntos de la curva&lt;br /&gt;
numPoints = 100;&lt;br /&gt;
t = linspace(0, 1, numPoints);&lt;br /&gt;
curvePoints = zeros(numPoints, 3);&lt;br /&gt;
&lt;br /&gt;
for i = 1:numPoints&lt;br /&gt;
    curvePoints(i, :) = bezierPoint(controlPoints, t(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuración de la visualización&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
grid on;&lt;br /&gt;
axis equal;&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva de Bézier&lt;br /&gt;
plot3(curvePoints(:,1), curvePoints(:,2), curvePoints(:,3), 'b-', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Graficar la curva poligonal (polígono de control)&lt;br /&gt;
plot3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 'ro-', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
% Decorar los puntos de control&lt;br /&gt;
scatter3(controlPoints(:,1), controlPoints(:,2), controlPoints(:,3), 100, 'r', 'filled');&lt;br /&gt;
&lt;br /&gt;
% Etiquetar los puntos de control&lt;br /&gt;
labels = {'P0', 'P1', 'P2', 'P3'};&lt;br /&gt;
for i = 1:length(labels)&lt;br /&gt;
    text(controlPoints(i,1), controlPoints(i,2), controlPoints(i,3), ...&lt;br /&gt;
         labels{i}, 'FontSize', 10, 'FontWeight', 'bold');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Configuraciones finales de la figura&lt;br /&gt;
title('Curva de Bézier Cúbica en 3D');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
zlabel('Eje Z');&lt;br /&gt;
view(45, 30);  % Ángulo de vista para mejor perspectiva 3D&lt;br /&gt;
legend('Curva de Bézier', 'Polígono de Control');&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
% Información adicional sobre los puntos de control&lt;br /&gt;
disp('Puntos de Control:');&lt;br /&gt;
for i = 1:size(controlPoints, 1)&lt;br /&gt;
    fprintf('P%d: [%.2f, %.2f, %.2f]\n', i-1, controlPoints(i,:));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Verificación de que los puntos no son coplanares&lt;br /&gt;
% Calculamos el volumen del tetraedro formado por los puntos&lt;br /&gt;
function vol = tetrahedronVolume(A, B, C, D)&lt;br /&gt;
    % Matriz de vectores&lt;br /&gt;
    M = [B-A; C-A; D-A];&lt;br /&gt;
    % Volumen = |det(M)| / 6&lt;br /&gt;
    vol = abs(det(M)) / 6;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
volumen = tetrahedronVolume(P0, P1, P2, P3);&lt;br /&gt;
fprintf('\nVolumen del tetraedro formado por los puntos: %.4f\n', volumen);&lt;br /&gt;
if volumen &amp;gt; 0&lt;br /&gt;
    disp('Los puntos NO son coplanares');&lt;br /&gt;
else&lt;br /&gt;
    disp('ADVERTENCIA: Los puntos parecen ser coplanares');&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Representación de los gráficos de la curvatura y de la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;.==&lt;br /&gt;
Una vez representada la curva de Bézier tridimensional junto a su curva poligonal, se continuará con la representación de la curvatura y la torsión como funciones del parámetro &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;. &lt;br /&gt;
Empezando por la curvatura (\kappa(t)), que marca cuanto se desvía la recta tangente a lo largo de la curva, y se calcula en función de la siguiente expresión: \kappa(t) = \frac{\|\mathbf{B}'(t) \times \mathbf{B}''(t)\|}{\|\mathbf{B}'(t)\|^3}&lt;br /&gt;
&lt;br /&gt;
==Animación que representa el triedro de Frenet que se mueve a lo largo de la curva.==&lt;br /&gt;
==Aplicación de una curva de Bézier al tramo de un circuito de &amp;lt;math&amp;gt;F_1&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
==Aplicaciones de las curvas de Bézier en la ingeniería.==&lt;/div&gt;</summary>
		<author><name>Maximiliano.rruiz</name></author>	</entry>

	</feed>