Diferencia entre revisiones de «La Clotoide (Grupo 41)»
| (No se muestran 29 ediciones intermedias de 2 usuarios) | |||
| Línea 1: | Línea 1: | ||
| − | {{ TrabajoED | La Clotoide. Grupo 41 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | | + | {{ TrabajoED | La Clotoide. Grupo 41 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | |
| + | Juan Luis Hermida Manso | ||
| + | Adolfo López March | ||
| + | Laura Rodríguez Neiras | ||
| + | Marta Marco Martín-Romo | ||
| + | Ángela Sánchez Barrio }} | ||
| + | =La Clotoide= | ||
| + | La clotoide es una curva espiral tangente al eje de abscisas en el origen, cuyo radio de curvatura disminuye de forma inversamente proporcional a la distancia recorrida sobre ella. Para analizar sus propiedades matemático-físicas, el estudio se centra en los vectores velocidad y aceleración, así como en los vectores del Triedro de Frenet (tangente y normal). Este análisis, apoyado con herramientas como MATLAB para cálculos precisos y representaciones gráficas, tiene una aplicación directa en el campo de la ingeniería civil. | ||
| + | La clotoide viene dada por las integrales: | ||
| + | <center> | ||
| + | <math> | ||
| + | \gamma(t) = (x(t),y(t)) | ||
| + | = \left( | ||
| + | \int_{0}^{t} \cos\!\left(\frac{s^{2}}{2}\right)\, ds,\; | ||
| + | \int_{0}^{t} \sin\!\left(\frac{s^{2}}{2}\right)\, ds | ||
| + | \right),\quad 0 \le t \le 4. | ||
| + | </math> | ||
| + | </center> | ||
| + | <br> | ||
| + | == Dibujo de la curva == | ||
| + | La curva se dibuja en MATLAB con el siguiente código: | ||
| + | [[Archivo:clotoide41.jpg|600px|thumb|right|Clotoide γ(t) para 0 ≤ t ≤ 4]] | ||
| + | {{matlab|codigo= | ||
| + | L = 4; | ||
| + | N = 4000; | ||
| + | t = linspace(0, L, N); | ||
| + | |||
| + | xprime = cos(t.^2/2); | ||
| + | yprime = sin(t.^2/2); | ||
| + | |||
| + | x = cumtrapz(t, xprime); | ||
| + | y = cumtrapz(t, yprime); | ||
| + | |||
| + | plot(x, y, 'LineWidth', 1.6) | ||
| + | axis equal | ||
| + | grid on | ||
| + | xlabel('x') | ||
| + | ylabel('y') | ||
| + | title('Clotoide \gamma(t), 0 \leq t \leq 4') | ||
| + | }} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==Vectores velocidad y aceleración== | ||
| + | Partimos de la definición de la curva: | ||
| + | |||
| + | <math> | ||
| + | \gamma(t)=\left( | ||
| + | \int_{0}^{t}\cos\left(\frac{s^{2}}{2}\right)\,ds,\ | ||
| + | \int_{0}^{t}\sin\left(\frac{s^{2}}{2}\right)\,ds | ||
| + | \right) | ||
| + | </math> | ||
| + | |||
| + | Derivando bajo el signo integral obtenemos fórmulas cerradas para velocidad y aceleración: | ||
| + | |||
| + | <math> | ||
| + | \boxed{ | ||
| + | \gamma'(t)=\left( | ||
| + | \cos\left(\frac{t^{2}}{2}\right),\ | ||
| + | \sin\left(\frac{t^{2}}{2}\right) | ||
| + | \right) | ||
| + | } | ||
| + | </math> | ||
| + | |||
| + | <math> | ||
| + | \boxed{ | ||
| + | \gamma''(t)=\left( | ||
| + | -\,t\sin\left(\frac{t^{2}}{2}\right),\ | ||
| + | t\cos\left(\frac{t^{2}}{2}\right) | ||
| + | \right) | ||
| + | } | ||
| + | </math> | ||
| + | |||
| + | ===Dibujo de los vectores velocidad y aceleración=== | ||
| + | La curva con sus vectores velocidad y aceleración se expresa en MATLAB con el siguiente código: | ||
| + | [[Archivo:Vectoresvelocidadyaceleracion41.jpg|600px|thumb|right|Clotoide γ(t) para 0 ≤ t ≤ 4]] | ||
| + | <syntaxhighlight lang="matlab"> | ||
| + | L = 4; N = 3000; | ||
| + | t = linspace(0,L,N); | ||
| + | |||
| + | vx = cos(t.^2/2); | ||
| + | vy = sin(t.^2/2); | ||
| + | ax = -t .* sin(t.^2/2); | ||
| + | ay = t .* cos(t.^2/2); | ||
| + | |||
| + | x = cumtrapz(t, vx); | ||
| + | y = cumtrapz(t, vy); | ||
| + | |||
| + | numArrows = 60; | ||
| + | idx = round(linspace(1,N,numArrows)); | ||
| + | scaleV = 0.2; | ||
| + | scaleA = 0.05; | ||
| + | |||
| + | figure | ||
| + | plot(x,y,'k-','LineWidth',1.4), hold on | ||
| + | plot(x(idx),y(idx),'ko','MarkerSize',3,'MarkerFaceColor','k') | ||
| + | quiver(x(idx),y(idx), vx(idx)*scaleV, vy(idx)*scaleV, 0, 'b','LineWidth',1); | ||
| + | quiver(x(idx),y(idx), ax(idx)*scaleA, ay(idx)*scaleA, 0, 'r','LineWidth',1); | ||
| + | |||
| + | xlabel('x'), ylabel('y') | ||
| + | axis equal, grid on | ||
| + | legend('Clotoide','Puntos muestreo','Velocidad','Aceleración','Location','best') | ||
| + | title('Clotoide y vectores velocidad y aceleración') | ||
| + | hold off | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==Longitud de la curva== | ||
| + | La longitud entre 0 y 4 es: | ||
| + | |||
| + | <math> | ||
| + | L=\int_0^4 \|\gamma'(t)\|\,dt | ||
| + | </math> | ||
| + | |||
| + | pero | ||
| + | |||
| + | <math> | ||
| + | \|\gamma'(t)\|=\sqrt{\cos^2\left(\frac{t^2}{2}\right)+\sin^2\left(\frac{t^2}{2}\right)}=1. | ||
| + | </math> | ||
| + | |||
| + | Por tanto: | ||
| + | |||
| + | <math> | ||
| + | \boxed{ | ||
| + | L=\int_0^4 1\,dt = 4. | ||
| + | } | ||
| + | </math> | ||
| + | |||
| + | ==Vectores tangente y normal== | ||
| + | Los vectores tangente y normal se obtienen a partir de la derivada: | ||
| + | |||
| + | <math> | ||
| + | \gamma'(t)=\left(\cos\left(\frac{t^2}{2}\right),\ \sin\left(\frac{t^2}{2}\right)\right) | ||
| + | </math> | ||
| + | |||
| + | Como <math>\|\gamma'(t)\|=1</math>, el vector tangente unitario es: | ||
| + | |||
| + | <math> | ||
| + | \mathbf{t}(t)=\gamma'(t) | ||
| + | </math> | ||
| + | |||
| + | El vector normal unitario (rotación de <math>\mathbf{t}(t)</math> en <math>+\pi/2</math>) es: | ||
| + | |||
| + | <math> | ||
| + | \mathbf{n}(t)=\left(-\sin\left(\frac{t^{2}}{2}\right),\ \cos\left(\frac{t^{2}}{2}\right)\right) | ||
| + | </math> | ||
| + | |||
| + | ===Dibujo de vectores tangente y normal=== | ||
| + | La curva con sus vectores tangente y normal se expresa en MATLAB con el siguiente código: | ||
| + | [[Archivo:Vectoresnormalytangente.jpg|600px|thumb|right|]] | ||
| + | {{matlab|codigo= | ||
| + | L = 4; | ||
| + | N = 3000; | ||
| + | t = linspace(0,L,N)'; | ||
| + | |||
| + | vx = cos(t.^2/2); | ||
| + | vy = sin(t.^2/2); | ||
| + | |||
| + | nx = -vy; | ||
| + | ny = vx; | ||
| + | |||
| + | x = cumtrapz(t,vx); | ||
| + | y = cumtrapz(t,vy); | ||
| + | |||
| + | numArrows = 40; | ||
| + | idx = round(linspace(1,N,numArrows)); | ||
| + | |||
| + | scaleT = 0.2; | ||
| + | scaleN = 0.2; | ||
| + | |||
| + | figure | ||
| + | hold on | ||
| + | plot(x,y,'k-','LineWidth',1.6) | ||
| + | |||
| + | quiver(x(idx),y(idx), vx(idx)*scaleT, vy(idx)*scaleT, 0, 'Color',[0.9 0 0], 'LineWidth',1) | ||
| + | quiver(x(idx),y(idx), nx(idx)*scaleN, ny(idx)*scaleN, 0, 'Color',[0 0 1], 'LineWidth',1) | ||
| + | |||
| + | axis equal | ||
| + | grid on | ||
| + | xlabel('x') | ||
| + | ylabel('y') | ||
| + | legend('Clotoide','Vectores tangente','Vectores normal','Location','best') | ||
| + | title('Clotoide con vectores tangente y normal') | ||
| + | hold off | ||
| + | |||
| + | }} | ||
| + | |||
| + | ==Curvatura== | ||
| + | Para calcular la curvatura usamos las expresiones obtenidas anteriormente: | ||
| + | |||
| + | <math> | ||
| + | \gamma'(t)=\left( | ||
| + | \cos\left(\frac{t^{2}}{2}\right),\ | ||
| + | \sin\left(\frac{t^{2}}{2}\right) | ||
| + | \right) | ||
| + | </math> | ||
| + | |||
| + | <math> | ||
| + | \gamma''(t)=\left( | ||
| + | -\,t\sin\left(\frac{t^{2}}{2}\right),\ | ||
| + | t\cos\left(\frac{t^{2}}{2}\right) | ||
| + | \right) | ||
| + | </math> | ||
| + | |||
| + | La fórmula general de la curvatura es: | ||
| + | |||
| + | <math> | ||
| + | \kappa(t)= | ||
| + | \frac{ | ||
| + | \left| | ||
| + | x'(t)\,y''(t)-y'(t)\,x''(t) | ||
| + | \right| | ||
| + | }{ | ||
| + | \left(x'(t)^{2}+y'(t)^{2}\right)^{3/2} | ||
| + | }. | ||
| + | </math> | ||
| + | |||
| + | Como | ||
| + | |||
| + | <math> | ||
| + | x'(t)^{2}+y'(t)^{2} | ||
| + | = | ||
| + | \cos^{2}\left(\frac{t^{2}}{2}\right)+\sin^{2}\left(\frac{t^{2}}{2}\right) | ||
| + | =1, | ||
| + | </math> | ||
| + | |||
| + | la fórmula se reduce a: | ||
| + | |||
| + | <math>\kappa(t)=\frac{\left|x'(t)y''(t)-y'(t)x''(t)\right|}{\left(x'(t)^2+y'(t)^2\right)^{3/2}}</math> | ||
| + | |||
| + | |||
| + | Sustituyendo: | ||
| + | |||
| + | <math> | ||
| + | x'(t)=\cos\left(\frac{t^{2}}{2}\right),\qquad | ||
| + | y'(t)=\sin\left(\frac{t^{2}}{2}\right) | ||
| + | </math> | ||
| + | |||
| + | <math> | ||
| + | x''(t)=-t\sin\left(\frac{t^{2}}{2}\right),\qquad | ||
| + | y''(t)=t\cos\left(\frac{t^{2}}{2}\right) | ||
| + | </math> | ||
| + | |||
| + | obtenemos: | ||
| + | |||
| + | <math> | ||
| + | x'(t)\,y''(t)-y'(t)\,x''(t) | ||
| + | = | ||
| + | t\left( | ||
| + | \cos^{2}\left(\frac{t^{2}}{2}\right) | ||
| + | + | ||
| + | \sin^{2}\left(\frac{t^{2}}{2}\right) | ||
| + | \right) | ||
| + | =t | ||
| + | </math> | ||
| + | |||
| + | Por tanto, la curvatura de la clotoide es: | ||
| + | |||
| + | <math> | ||
| + | \boxed{\kappa(t)=t} | ||
| + | </math> | ||
| + | |||
| + | ===Gráfica de la curvatura=== | ||
| + | La gráfica de la curvatura se expresa en MATLAB con el siguiente código: | ||
| + | [[Archivo:Curvatura41.jpg|600px|thumb|right|]] | ||
| + | {{matlab|codigo= | ||
| + | L = 4; | ||
| + | N = 2000; | ||
| + | t = linspace(0, L, N); | ||
| + | kappa = t; | ||
| + | |||
| + | figure | ||
| + | plot(t, kappa, 'LineWidth', 2) | ||
| + | grid on | ||
| + | xlabel('t') | ||
| + | ylabel('\kappa(t)') | ||
| + | title('Curvatura de la clotoide: \kappa(t) = t') | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | }} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==Circunferencia osculatriz== | ||
| + | Consideramos el punto <math>P=\gamma(1.5)</math>. | ||
| + | |||
| + | La curvatura es: | ||
| + | <math> | ||
| + | \kappa(t)=t | ||
| + | </math> | ||
| + | |||
| + | por tanto el radio de la circunferencia osculatriz es: | ||
| + | <math> | ||
| + | R=\frac{1}{\kappa(1.5)}=\frac{1}{1.5}=\frac{2}{3}\approx 0.6667. | ||
| + | </math> | ||
| + | |||
| + | El vector normal unitario es: | ||
| + | <math> | ||
| + | \mathbf{n}(t)=\left(\,-\sin\left(\frac{t^{2}}{2}\right),\;\cos\left(\frac{t^{2}}{2}\right)\right). | ||
| + | </math> | ||
| + | |||
| + | Evaluando en <math>t=1.5</math>: | ||
| + | <math> | ||
| + | \mathbf{n}(1.5)=\left(-\sin\left(\frac{1.5^{2}}{2}\right),\;\cos\left(\frac{1.5^{2}}{2}\right)\right) | ||
| + | \approx (-0.90227,\;0.43118). | ||
| + | </math> | ||
| + | |||
| + | El punto de la clotoide es: | ||
| + | <math> | ||
| + | \gamma(1.5)=\left(\int_{0}^{1.5}\cos\left(\frac{s^{2}}{2}\right)\,ds,\; | ||
| + | \int_{0}^{1.5}\sin\left(\frac{s^{2}}{2}\right)\,ds\right) | ||
| + | \approx (1.32096,\;0.51365). | ||
| + | </math> | ||
| + | |||
| + | El centro de la circunferencia osculatriz se calcula como: | ||
| + | <math> | ||
| + | Q=\gamma(1.5)+R\,\mathbf{n}(1.5) | ||
| + | </math> | ||
| + | |||
| + | Sustituyendo numéricamente: | ||
| + | <math> | ||
| + | Q \approx (1.32096,\;0.51365) + 0.6667\,(-0.90227,\;0.43118) | ||
| + | </math> | ||
| + | |||
| + | <math> | ||
| + | Q \approx (0.71945,\;0.80110). | ||
| + | </math> | ||
| + | |||
| + | ''Por tanto:'' | ||
| + | <math> | ||
| + | R \approx 0.6667, \qquad Q \approx (0.71945,\;0.80110). | ||
| + | </math> | ||
| + | |||
| + | |||
| + | ===Dibujo de la circunferencia osculatriz=== | ||
| + | [[Archivo:Circulbueno.jpg|600px|thumb|right|]] | ||
| + | {{matlab|codigo= | ||
| + | clear; close all; clc | ||
| + | |||
| + | L = 4; | ||
| + | N = 15000; | ||
| + | t = linspace(0,L,N); | ||
| + | |||
| + | vx = cos(t.^2/2); | ||
| + | vy = sin(t.^2/2); | ||
| + | |||
| + | x = cumtrapz(t, vx); | ||
| + | y = cumtrapz(t, vy); | ||
| + | |||
| + | t0 = 1.5; | ||
| + | x0 = interp1(t, x, t0, 'pchip'); | ||
| + | y0 = interp1(t, y, t0, 'pchip'); | ||
| + | |||
| + | nx = -sin(t0^2/2); | ||
| + | ny = cos(t0^2/2); | ||
| + | |||
| + | R = 1 / t0; | ||
| + | Cx = x0 + R*nx; | ||
| + | Cy = y0 + R*ny; | ||
| + | |||
| + | theta = linspace(0,2*pi,400); | ||
| + | xc = Cx + R*cos(theta); | ||
| + | yc = Cy + R*sin(theta); | ||
| + | |||
| + | figure('Color','w','Position',[200 200 800 600]) | ||
| + | plot(x,y,'k-','LineWidth',1.6), hold on | ||
| + | plot(xc,yc,'r--','LineWidth',1.6) | ||
| + | plot(x0,y0,'bo','MarkerFaceColor','b','MarkerSize',6) | ||
| + | plot(Cx,Cy,'ro','MarkerFaceColor','r','MarkerSize',6) | ||
| + | |||
| + | axis equal, grid on | ||
| + | xlabel('x'), ylabel('y') | ||
| + | title('Clotoide y circunferencia osculatriz en t = 1.5') | ||
| + | |||
| + | % Leyenda en el mismo sitio que antes: | ||
| + | legend('Clotoide','Circunferencia osculatriz','P = \gamma(1.5)','Centro C', ... | ||
| + | 'Location','northeast') | ||
| + | |||
| + | hold off | ||
| + | |||
| + | }} | ||
| + | |||
| + | =Usos en la ingeniería= | ||
| + | ==Información sobre la curva dada== | ||
| + | La clotoide es una curva pensada para que el paso entre una trayectoria recta y una curva circular se realice de forma progresiva. Su particularidad es que la curvatura no aparece de golpe, sino que aumenta de manera uniforme a lo largo del recorrido. Al inicio el radio es prácticamente infinito, lo que hace que la curva sea casi imperceptible, y a medida que avanzamos ese radio se reduce poco a poco hasta tomar un valor fijo, formando así una curva cada vez más pronunciada. | ||
| + | |||
| + | En el ámbito de la ingeniería este comportamiento resulta especialmente útil. Carreteras y líneas ferroviarias suelen incluir tramos basados en clotoides para enlazar rectas con curvas cerradas sin generar cambios bruscos en la aceleración lateral. Este aumento gradual de la curvatura evita sacudidas, reduce la sensación de giro repentino y contribuye tanto a la comodidad de los pasajeros como a la estabilidad del vehículo. Si la transición no se gestionara de esta manera, el aumento de la fuerza centrípeta sería inmediato y las maniobras resultarían mucho más incómodas o incluso peligrosas. | ||
| + | |||
| + | Las propiedades de la clotoide también la hacen adecuada para otros campos en los que se necesitan trayectorias suaves y predecibles. Puede encontrarse en el diseño de canales para mejorar el comportamiento del flujo del agua, en la planificación de maniobras de entrada y salida de embarcaciones o en la creación de curvas más seguras y fluidas en atracciones como montañas rusas. | ||
| + | |||
| + | ==Estructuras civiles con aplicaciones de la clotoide== | ||
| + | <gallery mode="packed" widths="200" heights="200"> | ||
| + | Archivo:Imagen de WhatsApp 2025-11-28 a las 11.20.36 eef10c34.jpg|Tehachapi Loop (California, EE. UU.) | ||
| + | Archivo:Imagen de WhatsApp 2025-11-28 a las 11.20.52 1f227e01.jpg|Williams Loop (California, EE. UU.) | ||
| + | Archivo:Imagen de WhatsApp 2025-11-28 a las 11.21.04 d8946452.jpg|Horseshoe Curve (Pensilvania, EE. UU.) | ||
| + | Archivo:Imagen de WhatsApp 2025-11-28 a las 11.21.33 1475980a.jpg|Raurimu Spiral (Nueva Zelanda) | ||
| + | Archivo:Imagen de WhatsApp 2025-11-28 a las 11.21.43 86b59644.jpg|Circuito de Nürburgring (Alemania) | ||
| + | </gallery> | ||
| + | |||
| + | =Hélice cónica= | ||
| + | [[Archivo:Elicoide41.jpg|600px|thumb|right|]] | ||
| + | {{matlab|codigo= | ||
| + | tmin = 2*pi; tmax = 6*pi; | ||
| + | Nt = 800; Nu = 40; | ||
| + | t = linspace(tmin,tmax,Nt).'; | ||
| + | u = linspace(-0.8,0.8,Nu); | ||
| + | |||
| + | ti = t; | ||
| + | Xg = ti .* cos(ti); | ||
| + | Yg = ti .* sin(ti); | ||
| + | Zg = ti; | ||
| + | gamma = [Xg Yg Zg]; | ||
| + | |||
| + | tg = [cos(ti) - ti.*sin(ti), sin(ti) + ti.*cos(ti), ones(Nt,1)]; % tangente (no normalizada) | ||
| + | er = [cos(ti), sin(ti), zeros(Nt,1)]; % vector radial en XY | ||
| + | |||
| + | tg2 = sum(tg.^2,2); | ||
| + | proj = ( sum(er.*tg,2) ./ tg2 ); % coeficiente de proyección | ||
| + | d = er - proj .* tg; | ||
| + | d_hat = d ./ vecnorm(d,2,2); | ||
| + | |||
| + | [Ugrid,Tgrid] = meshgrid(u,1:Nt); | ||
| + | X = Xg + Ugrid .* d_hat(:,1); | ||
| + | Y = Yg + Ugrid .* d_hat(:,2); | ||
| + | Z = Zg + Ugrid .* d_hat(:,3); | ||
| + | |||
| + | figure('Color','w') | ||
| + | surf(X,Y,Z,'FaceAlpha',0.88,'EdgeColor','none'), hold on | ||
| + | plot3(Xg,Yg,Zg,'k-','LineWidth',1.8) | ||
| + | |||
| + | numSeg = 50; | ||
| + | idx = round(linspace(1,Nt,numSeg)); | ||
| + | for k = 1:length(idx) | ||
| + | i = idx(k); | ||
| + | P = [Xg(i), Yg(i), Zg(i)]; | ||
| + | Q = P + d_hat(i,:) * 1.0; | ||
| + | plot3([P(1) Q(1)],[P(2) Q(2)],[P(3) Q(3)],'r-','LineWidth',1.2) | ||
| + | end | ||
| + | |||
| + | axis equal, grid on | ||
| + | xlabel('x'), ylabel('y'), zlabel('z') | ||
| + | view(40,25) | ||
| + | camlight; lighting gouraud | ||
| + | legend('Superficie reglada','Curva \gamma(t)','Segmentos (muestra)','Location','best') | ||
| + | hold off | ||
| + | |||
| + | }} | ||
| + | |||
| + | ==Distribución de la densidad a lo largo de la hélice== | ||
| + | |||
| + | Se da la densidad sobre la superficie: | ||
| + | |||
| + | <math>\displaystyle f(x_1,x_2,x_3)=\frac{x_1^2+x_2^2}{x_3}</math> | ||
| + | |||
| + | Sustituyendo la parametrización obtenemos, sobre la superficie, | ||
| + | |||
| + | <math>\displaystyle x_1^2+x_2^2=(t+u)^2,\qquad x_3=t,</math> | ||
| + | |||
| + | por tanto la densidad en coordenadas es | ||
| + | |||
| + | <math>\displaystyle f(\Phi(u,t))=\frac{(t+u)^2}{t}.</math> | ||
| + | |||
| + | Para calcular la masa es necesario multiplicar por el elemento de área de la superficie. Calculando derivadas: | ||
| + | |||
| + | <math>\displaystyle \Phi_u=(\cos t,\ \sin t,\ 0),</math> | ||
| + | |||
| + | <math>\displaystyle \Phi_t=\bigl(- (t+u)\sin t+\cos t,\ (t+u)\cos t+\sin t,\ 1\bigr).</math> | ||
| + | |||
| + | El módulo del producto vectorial se simplifica a | ||
| + | |||
| + | <math>\displaystyle |\Phi_u\times\Phi_t|=\sqrt{(t+u)^2+1}.</math> | ||
| + | |||
| + | Por tanto la masa M viene dada por la integral doble: | ||
| + | |||
| + | <math>\displaystyle | ||
| + | M=\int_{2\pi}^{6\pi}\int_{0}^{1}\frac{(t+u)^2}{t}\,\sqrt{(t+u)^2+1}\;du\,dt. | ||
| + | </math> | ||
| + | |||
| + | '''M se aproxima a 2406,03''' | ||
| + | |||
| + | ==Estructuras civiles con la aplicación de la hélice cónica== | ||
| + | <div style="text-align: center;"> | ||
| + | <div style="display: inline-block;"> | ||
| + | [[Archivo:Imagen de WhatsApp 2025-12-04 a las 18.21.02 8c928c35.jpg|frame|Museo Solomon R. Guggenheim (Nueva York, Estados Unidos)]] | ||
| + | </div> | ||
| + | </div> | ||
| + | |||
| + | =Poster= | ||
| + | [[Archivo:La_Clotoide_póster41.pdf]] | ||
| + | |||
| + | =Bibliografía= | ||
| + | https://moodle.upm.es/ | ||
| + | |||
| + | https://images.google.com/ | ||
| + | |||
| + | https://mat.caminos.upm.es/wiki/P%C3%A1gina_principal | ||
Revisión actual del 14:29 7 dic 2025
| Trabajo realizado por estudiantes | |
|---|---|
| Título | La Clotoide. Grupo 41 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores |
Juan Luis Hermida Manso Adolfo López March Laura Rodríguez Neiras Marta Marco Martín-Romo Ángela Sánchez Barrio |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 La Clotoide
La clotoide es una curva espiral tangente al eje de abscisas en el origen, cuyo radio de curvatura disminuye de forma inversamente proporcional a la distancia recorrida sobre ella. Para analizar sus propiedades matemático-físicas, el estudio se centra en los vectores velocidad y aceleración, así como en los vectores del Triedro de Frenet (tangente y normal). Este análisis, apoyado con herramientas como MATLAB para cálculos precisos y representaciones gráficas, tiene una aplicación directa en el campo de la ingeniería civil.
La clotoide viene dada por las integrales:
[math] \gamma(t) = (x(t),y(t)) = \left( \int_{0}^{t} \cos\!\left(\frac{s^{2}}{2}\right)\, ds,\; \int_{0}^{t} \sin\!\left(\frac{s^{2}}{2}\right)\, ds \right),\quad 0 \le t \le 4. [/math]
1.1 Dibujo de la curva
La curva se dibuja en MATLAB con el siguiente código:
L = 4;
N = 4000;
t = linspace(0, L, N);
xprime = cos(t.^2/2);
yprime = sin(t.^2/2);
x = cumtrapz(t, xprime);
y = cumtrapz(t, yprime);
plot(x, y, 'LineWidth', 1.6)
axis equal
grid on
xlabel('x')
ylabel('y')
title('Clotoide \gamma(t), 0 \leq t \leq 4')
1.2 Vectores velocidad y aceleración
Partimos de la definición de la curva:
[math] \gamma(t)=\left( \int_{0}^{t}\cos\left(\frac{s^{2}}{2}\right)\,ds,\ \int_{0}^{t}\sin\left(\frac{s^{2}}{2}\right)\,ds \right) [/math]
Derivando bajo el signo integral obtenemos fórmulas cerradas para velocidad y aceleración:
[math] \boxed{ \gamma'(t)=\left( \cos\left(\frac{t^{2}}{2}\right),\ \sin\left(\frac{t^{2}}{2}\right) \right) } [/math]
[math] \boxed{ \gamma''(t)=\left( -\,t\sin\left(\frac{t^{2}}{2}\right),\ t\cos\left(\frac{t^{2}}{2}\right) \right) } [/math]
1.2.1 Dibujo de los vectores velocidad y aceleración
La curva con sus vectores velocidad y aceleración se expresa en MATLAB con el siguiente código:
L = 4; N = 3000;
t = linspace(0,L,N);
vx = cos(t.^2/2);
vy = sin(t.^2/2);
ax = -t .* sin(t.^2/2);
ay = t .* cos(t.^2/2);
x = cumtrapz(t, vx);
y = cumtrapz(t, vy);
numArrows = 60;
idx = round(linspace(1,N,numArrows));
scaleV = 0.2;
scaleA = 0.05;
figure
plot(x,y,'k-','LineWidth',1.4), hold on
plot(x(idx),y(idx),'ko','MarkerSize',3,'MarkerFaceColor','k')
quiver(x(idx),y(idx), vx(idx)*scaleV, vy(idx)*scaleV, 0, 'b','LineWidth',1);
quiver(x(idx),y(idx), ax(idx)*scaleA, ay(idx)*scaleA, 0, 'r','LineWidth',1);
xlabel('x'), ylabel('y')
axis equal, grid on
legend('Clotoide','Puntos muestreo','Velocidad','Aceleración','Location','best')
title('Clotoide y vectores velocidad y aceleración')
hold off1.3 Longitud de la curva
La longitud entre 0 y 4 es:
[math] L=\int_0^4 \|\gamma'(t)\|\,dt [/math]
pero
[math] \|\gamma'(t)\|=\sqrt{\cos^2\left(\frac{t^2}{2}\right)+\sin^2\left(\frac{t^2}{2}\right)}=1. [/math]
Por tanto:
[math] \boxed{ L=\int_0^4 1\,dt = 4. } [/math]
1.4 Vectores tangente y normal
Los vectores tangente y normal se obtienen a partir de la derivada:
[math] \gamma'(t)=\left(\cos\left(\frac{t^2}{2}\right),\ \sin\left(\frac{t^2}{2}\right)\right) [/math]
Como [math]\|\gamma'(t)\|=1[/math], el vector tangente unitario es:
[math] \mathbf{t}(t)=\gamma'(t) [/math]
El vector normal unitario (rotación de [math]\mathbf{t}(t)[/math] en [math]+\pi/2[/math]) es:
[math] \mathbf{n}(t)=\left(-\sin\left(\frac{t^{2}}{2}\right),\ \cos\left(\frac{t^{2}}{2}\right)\right) [/math]
1.4.1 Dibujo de vectores tangente y normal
La curva con sus vectores tangente y normal se expresa en MATLAB con el siguiente código:
L = 4;
N = 3000;
t = linspace(0,L,N)';
vx = cos(t.^2/2);
vy = sin(t.^2/2);
nx = -vy;
ny = vx;
x = cumtrapz(t,vx);
y = cumtrapz(t,vy);
numArrows = 40;
idx = round(linspace(1,N,numArrows));
scaleT = 0.2;
scaleN = 0.2;
figure
hold on
plot(x,y,'k-','LineWidth',1.6)
quiver(x(idx),y(idx), vx(idx)*scaleT, vy(idx)*scaleT, 0, 'Color',[0.9 0 0], 'LineWidth',1)
quiver(x(idx),y(idx), nx(idx)*scaleN, ny(idx)*scaleN, 0, 'Color',[0 0 1], 'LineWidth',1)
axis equal
grid on
xlabel('x')
ylabel('y')
legend('Clotoide','Vectores tangente','Vectores normal','Location','best')
title('Clotoide con vectores tangente y normal')
hold off
1.5 Curvatura
Para calcular la curvatura usamos las expresiones obtenidas anteriormente:
[math] \gamma'(t)=\left( \cos\left(\frac{t^{2}}{2}\right),\ \sin\left(\frac{t^{2}}{2}\right) \right) [/math]
[math] \gamma''(t)=\left( -\,t\sin\left(\frac{t^{2}}{2}\right),\ t\cos\left(\frac{t^{2}}{2}\right) \right) [/math]
La fórmula general de la curvatura es:
[math] \kappa(t)= \frac{ \left| x'(t)\,y''(t)-y'(t)\,x''(t) \right| }{ \left(x'(t)^{2}+y'(t)^{2}\right)^{3/2} }. [/math]
Como
[math] x'(t)^{2}+y'(t)^{2} = \cos^{2}\left(\frac{t^{2}}{2}\right)+\sin^{2}\left(\frac{t^{2}}{2}\right) =1, [/math]
la fórmula se reduce a:
[math]\kappa(t)=\frac{\left|x'(t)y''(t)-y'(t)x''(t)\right|}{\left(x'(t)^2+y'(t)^2\right)^{3/2}}[/math]
Sustituyendo:
[math] x'(t)=\cos\left(\frac{t^{2}}{2}\right),\qquad y'(t)=\sin\left(\frac{t^{2}}{2}\right) [/math]
[math] x''(t)=-t\sin\left(\frac{t^{2}}{2}\right),\qquad y''(t)=t\cos\left(\frac{t^{2}}{2}\right) [/math]
obtenemos:
[math] x'(t)\,y''(t)-y'(t)\,x''(t) = t\left( \cos^{2}\left(\frac{t^{2}}{2}\right) + \sin^{2}\left(\frac{t^{2}}{2}\right) \right) =t [/math]
Por tanto, la curvatura de la clotoide es:
[math] \boxed{\kappa(t)=t} [/math]
1.5.1 Gráfica de la curvatura
La gráfica de la curvatura se expresa en MATLAB con el siguiente código:
L = 4;
N = 2000;
t = linspace(0, L, N);
kappa = t;
figure
plot(t, kappa, 'LineWidth', 2)
grid on
xlabel('t')
ylabel('\kappa(t)')
title('Curvatura de la clotoide: \kappa(t) = t')
1.6 Circunferencia osculatriz
Consideramos el punto [math]P=\gamma(1.5)[/math].
La curvatura es: [math] \kappa(t)=t [/math]
por tanto el radio de la circunferencia osculatriz es: [math] R=\frac{1}{\kappa(1.5)}=\frac{1}{1.5}=\frac{2}{3}\approx 0.6667. [/math]
El vector normal unitario es: [math] \mathbf{n}(t)=\left(\,-\sin\left(\frac{t^{2}}{2}\right),\;\cos\left(\frac{t^{2}}{2}\right)\right). [/math]
Evaluando en [math]t=1.5[/math]: [math] \mathbf{n}(1.5)=\left(-\sin\left(\frac{1.5^{2}}{2}\right),\;\cos\left(\frac{1.5^{2}}{2}\right)\right) \approx (-0.90227,\;0.43118). [/math]
El punto de la clotoide es: [math] \gamma(1.5)=\left(\int_{0}^{1.5}\cos\left(\frac{s^{2}}{2}\right)\,ds,\; \int_{0}^{1.5}\sin\left(\frac{s^{2}}{2}\right)\,ds\right) \approx (1.32096,\;0.51365). [/math]
El centro de la circunferencia osculatriz se calcula como: [math] Q=\gamma(1.5)+R\,\mathbf{n}(1.5) [/math]
Sustituyendo numéricamente: [math] Q \approx (1.32096,\;0.51365) + 0.6667\,(-0.90227,\;0.43118) [/math]
[math] Q \approx (0.71945,\;0.80110). [/math]
Por tanto: [math] R \approx 0.6667, \qquad Q \approx (0.71945,\;0.80110). [/math]
1.6.1 Dibujo de la circunferencia osculatriz
clear; close all; clc
L = 4;
N = 15000;
t = linspace(0,L,N);
vx = cos(t.^2/2);
vy = sin(t.^2/2);
x = cumtrapz(t, vx);
y = cumtrapz(t, vy);
t0 = 1.5;
x0 = interp1(t, x, t0, 'pchip');
y0 = interp1(t, y, t0, 'pchip');
nx = -sin(t0^2/2);
ny = cos(t0^2/2);
R = 1 / t0;
Cx = x0 + R*nx;
Cy = y0 + R*ny;
theta = linspace(0,2*pi,400);
xc = Cx + R*cos(theta);
yc = Cy + R*sin(theta);
figure('Color','w','Position',[200 200 800 600])
plot(x,y,'k-','LineWidth',1.6), hold on
plot(xc,yc,'r--','LineWidth',1.6)
plot(x0,y0,'bo','MarkerFaceColor','b','MarkerSize',6)
plot(Cx,Cy,'ro','MarkerFaceColor','r','MarkerSize',6)
axis equal, grid on
xlabel('x'), ylabel('y')
title('Clotoide y circunferencia osculatriz en t = 1.5')
% Leyenda en el mismo sitio que antes:
legend('Clotoide','Circunferencia osculatriz','P = \gamma(1.5)','Centro C', ...
'Location','northeast')
hold off
2 Usos en la ingeniería
2.1 Información sobre la curva dada
La clotoide es una curva pensada para que el paso entre una trayectoria recta y una curva circular se realice de forma progresiva. Su particularidad es que la curvatura no aparece de golpe, sino que aumenta de manera uniforme a lo largo del recorrido. Al inicio el radio es prácticamente infinito, lo que hace que la curva sea casi imperceptible, y a medida que avanzamos ese radio se reduce poco a poco hasta tomar un valor fijo, formando así una curva cada vez más pronunciada.
En el ámbito de la ingeniería este comportamiento resulta especialmente útil. Carreteras y líneas ferroviarias suelen incluir tramos basados en clotoides para enlazar rectas con curvas cerradas sin generar cambios bruscos en la aceleración lateral. Este aumento gradual de la curvatura evita sacudidas, reduce la sensación de giro repentino y contribuye tanto a la comodidad de los pasajeros como a la estabilidad del vehículo. Si la transición no se gestionara de esta manera, el aumento de la fuerza centrípeta sería inmediato y las maniobras resultarían mucho más incómodas o incluso peligrosas.
Las propiedades de la clotoide también la hacen adecuada para otros campos en los que se necesitan trayectorias suaves y predecibles. Puede encontrarse en el diseño de canales para mejorar el comportamiento del flujo del agua, en la planificación de maniobras de entrada y salida de embarcaciones o en la creación de curvas más seguras y fluidas en atracciones como montañas rusas.
2.2 Estructuras civiles con aplicaciones de la clotoide
3 Hélice cónica
tmin = 2*pi; tmax = 6*pi;
Nt = 800; Nu = 40;
t = linspace(tmin,tmax,Nt).';
u = linspace(-0.8,0.8,Nu);
ti = t;
Xg = ti .* cos(ti);
Yg = ti .* sin(ti);
Zg = ti;
gamma = [Xg Yg Zg];
tg = [cos(ti) - ti.*sin(ti), sin(ti) + ti.*cos(ti), ones(Nt,1)]; % tangente (no normalizada)
er = [cos(ti), sin(ti), zeros(Nt,1)]; % vector radial en XY
tg2 = sum(tg.^2,2);
proj = ( sum(er.*tg,2) ./ tg2 ); % coeficiente de proyección
d = er - proj .* tg;
d_hat = d ./ vecnorm(d,2,2);
[Ugrid,Tgrid] = meshgrid(u,1:Nt);
X = Xg + Ugrid .* d_hat(:,1);
Y = Yg + Ugrid .* d_hat(:,2);
Z = Zg + Ugrid .* d_hat(:,3);
figure('Color','w')
surf(X,Y,Z,'FaceAlpha',0.88,'EdgeColor','none'), hold on
plot3(Xg,Yg,Zg,'k-','LineWidth',1.8)
numSeg = 50;
idx = round(linspace(1,Nt,numSeg));
for k = 1:length(idx)
i = idx(k);
P = [Xg(i), Yg(i), Zg(i)];
Q = P + d_hat(i,:) * 1.0;
plot3([P(1) Q(1)],[P(2) Q(2)],[P(3) Q(3)],'r-','LineWidth',1.2)
end
axis equal, grid on
xlabel('x'), ylabel('y'), zlabel('z')
view(40,25)
camlight; lighting gouraud
legend('Superficie reglada','Curva \gamma(t)','Segmentos (muestra)','Location','best')
hold off
3.1 Distribución de la densidad a lo largo de la hélice
Se da la densidad sobre la superficie:
[math]\displaystyle f(x_1,x_2,x_3)=\frac{x_1^2+x_2^2}{x_3}[/math]
Sustituyendo la parametrización obtenemos, sobre la superficie,
[math]\displaystyle x_1^2+x_2^2=(t+u)^2,\qquad x_3=t,[/math]
por tanto la densidad en coordenadas es
[math]\displaystyle f(\Phi(u,t))=\frac{(t+u)^2}{t}.[/math]
Para calcular la masa es necesario multiplicar por el elemento de área de la superficie. Calculando derivadas:
[math]\displaystyle \Phi_u=(\cos t,\ \sin t,\ 0),[/math]
[math]\displaystyle \Phi_t=\bigl(- (t+u)\sin t+\cos t,\ (t+u)\cos t+\sin t,\ 1\bigr).[/math]
El módulo del producto vectorial se simplifica a
[math]\displaystyle |\Phi_u\times\Phi_t|=\sqrt{(t+u)^2+1}.[/math]
Por tanto la masa M viene dada por la integral doble:
[math]\displaystyle M=\int_{2\pi}^{6\pi}\int_{0}^{1}\frac{(t+u)^2}{t}\,\sqrt{(t+u)^2+1}\;du\,dt. [/math]
M se aproxima a 2406,03
3.2 Estructuras civiles con la aplicación de la hélice cónica
4 Poster
Archivo:La Clotoide póster41.pdf
