Image:Damped spring.gif
Un article de Wikipédia, l'encyclopédie libre.
Pas de plus haute résolution disponible.
Damped_spring.gif (110 × 359 pixels, taille du fichier : 207 Kio, type MIME : image/gif)
Ce fichier provient de Wikimedia Commons?. Les informations le concernant sont affichées ci-dessous (procédure). |
Illustration of en:Damping
Description |
This media has no description, and may be lacking other information. العربية | Български | Català | Česky | Deutsch | English | Español | Estremeñu | فارسی | Français | Galego | עברית | Hrvatski | Italiano | 日本語 | Lietuvių | Polski | Português | Română | Русский | Українська | 中文(简体) | +/- |
---|---|
Source |
self-made with en:Matlab. Converted to gif animation with the en:ImageMagick convert tool (see the specific command later in the code). |
Date |
02:42, 24 June 2007 (UTC) |
Author | |
Permission (Reusing this image) |
see below |
Other versions | Harmonic version |
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide. In case this is not legally possible: Afrikaans | Alemannisch | Aragonés | العربية | Asturianu | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Eʋegbe | Ελληνικά | English | Español | Esperanto | Euskara | Estremeñu | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Kurdî / كوردی | Latina | Lietuvių | Latviešu | Magyar | Македонски | Bahasa Melayu | Nederlands | Norsk (bokmål) | Norsk (nynorsk) | 日本語 | Polski | Português | Ripoarisch | Română | Русский | Shqip | Slovenčina | Slovenščina | Српски / Srpski | Svenska | ไทย | Tagalog | Türkçe | Українська | Tiếng Việt | Walon | 中文(简体) | 中文(繁體) | zh-yue-hant | +/- |
[edit] Source code
% Illustration of a damped spring function main() % colors black = [0, 0, 0]; white = 0.99*[1, 1, 1]; cobalt = [0 71 171]/256; pblue = [0 49 83]/256; tene = [205 87 0]/256; wall_color = pblue; spring_color = cobalt; mass_color = tene; a=0.65; bmass_color = a*mass_color+(1-a)*black; % linewidth and fontsize lw=2; fs=20; ww = 0.5; % wall width ms = 0.25; % the size of the mass sw=0.1; % spring width curls = 8; A = 0.45; % the amplitude of spring oscillations B = -1; % the y coordinate of the base state (the origin is higher, at the wall) % Each of the small lines has length l l = 0.05; N = 15; % times per oscillation No = 4; % number of oscillations damping = 0.1; % controls the damping for i = 1:(N*No+5) % set up the plotting window figure(1); clf; hold on; axis equal; axis off; t = 2*pi*(i-1)/(N-0)+pi/2; % current time H= A*exp(-damping*t)*sin(t) + B; % position of the mass % plot the spring from Start to End Start = [0, 0]; End = [0, H]; [X, Y]=do_plot_spring(Start, End, curls, sw); plot(X, Y, 'linewidth', lw, 'color', spring_color); % Here we cheat. We modify the point B so that the mass is attached exactly at the end of the % spring. This should not be necessary. I am too lazy to to the exact calculation. K = length(X); End(1) = X(K); End(2) = Y(K); % plot the wall from which the spring is hanging plot_wall(-ww/2, ww/2, l, lw, wall_color); % plot the mass at the end of the spring X=[-ms/2 ms/2 ms/2 -ms/2 -ms/2 ms/2]+End(1); Y=[0 0 -ms -ms 0 0]+End(2); H=fill(X, Y, mass_color, 'EdgeColor', bmass_color, 'linewidth', lw); % the bounding box Sx = -0.4*ww; Sy = B-A*exp(-damping*3*pi/2)-ms+0.05; Lx = 0.4*ww+l; Ly=l; axis([Sx, Lx, Sy, Ly]); plot(Sx, Sy, '*', 'color', white); % a hack to avoid a saveas to eps bug saveas(gcf, sprintf('Spring_frame%d.eps', 1000+i), 'psc2') %save the current frame disp(sprintf('Spring_frame%d', 1000+i)); %show the frame number we are at pause(0.1); end % The following command was used to create the animated figure. % convert -antialias -loop 10000 -delay 7 -compress LZW Spring_frame10* Damped_spring.gif function [X, Y]=do_plot_spring(A, B, curls, sw); % plot a 3D spring, then project it onto 2D. theta controls the angle of projection. % The string starts at A and ends at B % will rotate by theta when projecting from 1D to 2D theta=pi/6; Npoints = 500; % spring length D = sqrt((A(1)-B(1))^2+(A(2)-B(2))^2); X=linspace(0, 1, Npoints); XX = linspace(-pi/2, 2*pi*curls+pi/2, Npoints); Y=-sw*cos(XX); Z=sw*sin(XX); % b gives the length of the small straight segments at the ends % of the spring (to which the wall and the mass are attached) b= 0.05; % stretch the spring in X to make it of length D - 2*b N = length(X); X = (D-2*b)*(X-X(1))/(X(N)-X(1)); % shift by b to the rigth and add the two small segments of length b X=[0, X+b X(N)+2*b]; Y=[Y(1) Y Y(N)]; Z=[Z(1) Z Z(N)]; % project the 3D spring to 2D M=[cos(theta) sin(theta); -sin(theta) cos(theta)]; N=length(X); for i=1:N; V=M*[X(i), Z(i)]'; X(i)=V(1); Z(i)=V(2); end % shift the spring to start from 0 X = X-X(1); % now that we have the horisontal spring (X, Y) of length D, % rotate and translate it to go from A to B Theta = atan2(B(2)-A(2), B(1)-A(1)); M=[cos(Theta) -sin(Theta); sin(Theta) cos(Theta)]; N=length(X); for i=1:N; V=M*[X(i), Y(i)]'+A'; X(i)=V(1); Y(i)=V(2); end function plot_wall(S, E, l, lw, wall_color) % Plot a wall from S to E. no=20; spacing=(E-S)/(no-1); plot([S, E], [0, 0], 'linewidth', 1.8*lw, 'color', wall_color); V=l*(0:0.1:1); for i=0:(no-1) plot(S+ i*spacing + V, V, 'color', wall_color) end
Historique du fichier
Cliquer sur une date et une heure pour voir le fichier tel qu’il était à ce moment-là
Date et heure | Dimensions | Utilisateur | Commentaire | |
---|---|---|---|---|
actuel | 24 juin 2007 à 05:54 | 110×359 (207 Kio) | Oleg Alexandrov | (Illustration of en:Damping {{Information |Description= |Source=self-made with en:Matlab. Converted to gif animation with the en:ImageMagick convert tool (see the specific command later in the code). |Date= 02:42, 24 June 2007 (UTC) |Autho) |
Pages contenant l’image
Les pages ci-dessous contiennent cette image :