Image:Foucault-anim.gif

From Wikipedia, the free encyclopedia

No higher resolution available.

Foucault-anim.gif (640 × 480 pixel, file size: 130 KB, MIME type: image/gif)

Wikimedia Commons logo This is a file from the Wikimedia Commons. The description on its description page there is shown below.
Commons is attempting to create a freely licensed media file repository. You can help.

[edit] Description

Description
Français : Animation d'un pendule de Foucault de 67 mètres fictif laché à une distance de 50,25 mètres (3/4 de sa longueur) à l'est avec une vitesse nulle. La rotation de la Terre est également exagérée et correspond à une rotation en 110 secondes. Le programme de l'animation Gnuplot est fourni (GPL)
English: Animation of a fictitious pendulum of Foucault of 67 meters released at a distance of 50,25 meters (3/4 its length) in the east with a null speed. The rotation of the Earth is also exaggerated and corresponds to a rotation in 110 seconds. Source of the Gnuplot animation is provided (GPL)
Deutsch: Belebung eines fiktiven Pendels von Foucault von 67 Metern, das an einer Distanz von 50,25 Metern (3/4 von ihrer Länge) im Osten mit einer Null-Geschwindigkeit befreit wurde. Die Rotation der Erde wird ebenfalls übertrieben und entspricht einer Umdrehung in 110 Sekunden. Das Programm der Gnuplot-Belebung wird geliefert (GPL)
Source

own work

Date

2007.03.12

Author

Nbrouard

Permission

see below

Other versions Media:foucault-rotz.gif
reset
set ter x11 # or windows on Windows
# Programme Gnuplot foucault-anim.gp, ne fonctionne qu'avec une version >=4.2 et une libgd récente
# Nbrouard 7 mars 2002 v1.0 Sous licence GPL. GNU General Public License
# Nbrouard 12 mars 2007 v1.1
#             Ajout de l'ellipse et simplification des équations
# Nbrouard 14 mars 2007 v1.2
#             Ajout du fil du pendule.
# Nbrouard 16 mars 2007 v1.4
#             Suppression des axes et ajout d'une coupole
#             Indication pour le traitement des caractères unicode UTF-8
# Nbrouard 21 mars 2007 v1.5
#             Ajout gifsicle pour réduire la taille. 
#
# Dernière version sous http://commons.wikimedia.org/wiki/Image:Foucault-rotz.gif
g=9.81 # gravité g/s2
l=67.   # longueur du pendule en mètres
omega=sqrt(g/l)

# Choisir la vitesse de rotation de la Terre
Omega=2.*pi/24./3600. # Rotation de la Terre, 24 heures par jour
Omega=2.*pi/(23.+(56./60.))/3600. # Rotation de la Terre, 23h56 jour sidéral (pour le 3e dessin)
Omega=2.*pi/3600.*60. # Rotation très rapide en 1/60e d'heure pour un dessin
Omega=2.*pi/3600./24.*24.*60./1.5 # Rotation très rapide en 2/3*1/60e d'heure 90 secondes pour le premier dessin 
Omega=2.*pi/3600./24.*24.*60./3.5 # Rotation très rapide en 3.5 1/60e d'heure soit 110 secondes pour le second dessin
print "Période de la Terre 2.*pi/Omega= ",2.*pi/Omega, " secondes"

theta=(48.+52./60.)/360*2.*pi   # latitude de 48 degrés 52 minutes
omegz=sqrt(omega*omega+Omega*Omega*sin(theta)*sin(theta))

complex(x,y)=x*{1,0}+y*{0,1} # fonction utile

# cas où le pendule est propulsé du centre avec une vitesse de 2m/s (cas irréaliste non dessiné)
z0={0,0}
vz=2         # Si propulsé au centre avec une vitesse de 2 m/s
zp0=complex(vz,0)

# cas 'historique' où le pendule est lancé sans vitesse
#   initiale à z0 mètres à l'est du centre.
z0={6.,0}  # pour le 3e dessin
z0=l*3./4.*{1,0}  # pour les premier et second dessins
zp0={0,0}
print "Vitesse initiale ",zp0

c1=z0/2.*(1+Omega/omegz*sin(theta))*{1,0}-zp0/2./omegz*{0,1}
c2=z0/2.*(1-Omega/omegz*sin(theta))*{1,0}+zp0/2./omegz*{0,1}
unset label 
eix(x)=cos(x)*{1,0}+sin(x)*{0,1}
#z(t)=c1*eix(-(Omega*sin(theta)-omegz)*t) + c2*eix(-(Omega*sin(theta)+omegz)*t)
z(t)=eix(-(Omega*sin(theta))*t)*(z0*(cos(omegz*t)*{1,0}+Omega*sin(theta)/omegz*sin(omegz*t)*{0,1})+zp0/omegz*sin(omegz*t))

set parametric
# Trace dans le pseudo plan d'oscillation (pas dessiné)
#plot real(c1*eix(omegz*t)+c2*eix(-omegz*t)), imag(c1*eix(omegz*t)+c2*eix(-omegz*t))
#plot [t=0:3.65*2.*pi/omegz] [-abs(z0):abs(z0)] [-abs(z0):abs(z0)] real(z(t)),imag(z(t))
h(t)=-sqrt(l*l-abs(z(t))*abs(z(t)))+l
hz=h(0)

# La coupole du Panthéon : nombre d'ogives 3 par défaut
# Il faut la tracer en paramétrique pour t variant de O à tf. 
nogives=3.
spx(t,tf)= l*(cos(floor(t/tf*nogives)*pi/nogives)*cos(t/tf*pi*nogives))
spy(t,tf)= l*(sin(floor(t/tf*nogives)*pi/nogives)*cos(t/tf*pi*nogives))
sph(t,tf)= l*abs(sin(t/tf*pi*nogives))

# Le fil
px(t,tf)= t/tf*real(z(tf))
py(t,tf) =t/tf*imag(z(tf))
ph(t,tf) =l+t/tf*(h(tf)-l)

#--- Paramètres
#   Langues
lang="de"
lang="en"
lang="fr" # par défaut

#   Type de repère
fixe=0 # Dessin dans le repère terrestre
#fixe=1 # Dessin dans le plan du pendule

#   Taille des fichiers animés
thumb=-1 # X11 or Win
thumb=0 # 640x480
#thumb=1 # 180x135 Miniatures par défaut de Wikipédia

split=1  # Si on souhaite des fichiers images séparés (dans un sous-répertoire)
split=0

#utf8=1 # voir plus bas
#-- Fin des paramètres

# Pour traiter des caractères UTF-8, il faut obtenir par exemple des polices TrueType
# voir le site http://corefonts.sourceforge.net/
# Dans ce cas on peut faire set ter gif font "arial" 14 mais il faut
# que l'environnement GDFONTPATH pointe sur le répertoire TrueType :export GDFONTPATH="/usr/share/fonts/msttcorefonts/"
# export GNUPLOT_DEFAULT_GDFONT="arial"

if(lang ne "fr") ficlang=sprintf("-%s",lang); else ficlang="";
if (lang eq "de") Est="Osten"; Ouest="Westen"; Nord="Norden"; Sud="Süden"; \
else if (lang eq "en") Est="East";  Ouest="West"; Nord="North"; Sud="South"; \
else Est="Est"; Ouest="Ouest"; Nord="Nord"; Sud="Sud";

unset label
set label Est at l*1.2,0,0 center
set label Ouest at -l*1.2,0,0 center
set label Nord at 0,l*1.2,0 center
set label Sud at 0,-l*1.2,0 center
#set xlabel "Ouest <-> Est en metres"
#set ylabel "Sud <-> Nord en metres"


#set samples 100
set xyplane at 0
#set size 0.75,1 # aspect circulaire 480/640=0.75 # Merci à Michel Barbetorte 07/03/07
rotationz=28
rotationz=0
rotationx=50
#set view rotationx,rotationz,1,1.5
set view rotationx,rotationz,1,1.0
# dessin à l'écran pour voir
splot [t=0:3.65*2.*pi/omegz] [:] [-abs(z0):abs(z0)] [-abs(z0):abs(z0)] [0:l] real(z(t)),imag(z(t)),((t<pi/omegz)&&(t>0)?h(t):1/0) with lines lt palette , real(z(t)),imag(z(t)),0 with lines 

unset title
unset key
unset xtics
unset ytics
unset ztics
set border 0
set size square
set size 1.3,1.3
set size 1.5,1.5
set size 1.54,1.54
set origin -0.4,-0.15
#set origin -0.4,-0.15
 set origin -0.2,-0.15
sampbase=700
set samples sampbase
n=24
tdelta=2.*pi/omegz/n
tfin=12*2.*pi/omegz
tfin=3*2.*pi/omegz
#tfin=pi/omegz
limit_iterations=9*n
#limit_iterations=6
#limit_iterations=13
tmin=1.e-3
tdeb=tdelta
tdeb=tmin
iteration_count=0
if(fixe==1) rotationz=80.; else  rotationz=28.
set view rotationx,rotationz,1,1.0
#set ter gif size 640,480 large animate optimize
# set ter gif animate optimize size 640,480 \
#                         xffffff x000000 x404040 \
#                         xff0000 xffa500 x66cdaa xcdb5cd \
#                         xadd8e6 x0000ff xdda0dd x9500d3    # defaults

if(thumb==1) xpix=180;ypix=135; else xpix=640;ypix=480;
#if(thumb==1) xpix=180;ypix=135; else xpix=540;ypix=405;
if(fixe==1) tfixe="rotz";else tfixe="anim";

iteration_count=0
if(thumb==1) labpix=sprintf("%dx%d-",xpix,ypix); else labpix="";
if(split != 1) ficsortie=sprintf("%sfoucault-%s%s.gif",labpix,tfixe,ficlang) # else voir dans la boucle

if(thumb==-1) set ter x11; set out; else if(split==1) set ter gif animate optimize size xpix,ypix xffffff x000000 xa0a0a0 xff0000 x00c000 x0080ff xc000ff x00eeee ; set out; else set ter gif animate optimize size xpix,ypix  xffffff x000000 xa0a0a0 xff0000 x00c000 x0080ff xc000ff x00eeee; set out ficsortie;
show ter
show output

rotationdynz=rotationz/360.*2.*pi
if(fixe==1) rotationzinc=-tdelta*Omega*sin(theta); else rotationzinc=0
call "foucault-rot-ellipse.gp" "Rotationz" rotationzinc split
set ter X11
set out
replot
# Gnuplot 2.3 rc4 semble moins bien optimser que gifsicle ou Gimp pour réduire sa taille. 
# Ici on a fait :
#! gifsicle -O2 -k8 foucault-rot.gif -o  foucault-rotz.gif
# Fin

Nous avons besoin d'un programe d'itération pour faire plusieurs images:

# Foucault-iter.gp
# Version 1.5 du 21 mars 2007
# Dernière version sous http://commons.wikimedia.org/wiki/Image:Foucault-rotz.gif
if(split==1) ficsortie=sprintf("foucault-%s%s/%sfoucault-%s%s-%d.gif",tfixe,ficlang,labpix,tfixe,ficlang,iteration_count);set out ficsortie
print "Fichier Rotationz=$0 rotationzinc=$1 split=$2 ficsortie=",ficsortie
print "1-rotationdynz=",rotationdynz, " deg=", rotationdynz/2./pi*360.
rotationdynz=rotationdynz+$1
rotationdyndegz=rotationdynz/2./pi*360.
rotationdyndegz=rotationdyndegz -int(rotationdyndegz/360.)*360.
if(rotationdyndegz<0) rotationdyndegz=rotationdyndegz+360.
print "2-rotationdynz=",rotationdynz, " deg=", rotationdyndegz
set view ,rotationdyndegz,,
iteration_count=iteration_count+1
if(tdeb/tdelta>sampbase) set samples tdeb*sampbase/tdelta
znonrot(t)=eix(-Omega*sin(theta)*(tdeb-t))*z(t)
print "iteration_count in ", iteration_count," limit_iterations ", limit_iterations, " tdeb ",tdeb," xnonrot(tdeb) ", real(znonrot(tdeb))," ynonrot(tdeb) ",imag(znonrot(tdeb))

#  splot [t=0:tdeb] [:] [-abs(z0):abs(z0)] [-abs(z0):abs(z0)] [0:l] 

 if (((!limit_iterations) || (iteration_count<=limit_iterations)) && (tdeb <= tfin)) \
   print "iteration_count loop ",iteration_count; \
   splot [t=0:tdeb] [:] [-l:l] [-l:l] [0:l] \
     real(z(t)),imag(z(t)),0 not with lines lc rgb 'green', \
     real(znonrot(t)),imag(znonrot(t)),((0<=t)&&(t<=tdeb)?h(t):1/0) not with lines lc rgb 'blue', \
     px(t,tdeb),py(t,tdeb),((0<=t)&&(t<=tdeb)?ph(t,tdeb):1/0) not with lines lt 6, \
     real(z(t)),imag(z(t)),((tdeb-tdelta/2.<t)&&(t<=tdeb)?h(t):1/0) not with lines lc rgb 'red' lw 3, \
     spx(t,tdeb),spy(t,tdeb),sph(t,tdeb) not with lines lc rgb 'black', \
     spx(t,tdeb),-spy(t,tdeb),sph(t,tdeb) not with lines lc rgb 'black'; \
     tdeb=tdeb+tdelta; \
   print (iteration_count+0.1-0.1)/limit_iterations*100, " pour cent"; \
reread
  #pause mouse any "Any key or button will terminate" ;  \ Doit être avant le reread pour debuguer
  #  print "spx=",spx(tdeb,tdeb)," spy=",spy(tdeb,tdeb)," sph=",sph(tdeb,tdeb)," tdeb=",tdeb; \
 # 'blutux.rgb' binary array=128x128 dx=0.1 dy=0.1 flipy rot=0.pi center = (50,-3.5,0) perp=(0,1,0) format='%uchar%uchar%uchar' using ($1+$2+$3)/3. with image 

[edit] Licensing

I, the author of this work, hereby publish it under the following licenses:
GNU head Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

العربية | Asturianu | Български | বাংলা | ইমার ঠার | Brezhoneg | Bosanski | Català | Sinugboanong Binisaya | Česky | Dansk | Deutsch | Ελληνικά | English | Esperanto | Español | Eesti | Euskara | فارسی | Suomi | Français | Galego | עברית | Hrvatski | Magyar | Bahasa Indonesia | Ido | Íslenska | Italiano | 日本語 | ქართული | 한국어 | Kurdî / كوردي | Latina | Lëtzebuergesch | Lietuvių | Bahasa Melayu | Nnapulitano | Nederlands | Norsk (nynorsk) | Norsk (bokmål) | Polski | Português | Română | Русский | Slovenčina | Slovenščina | Shqip | Српски | Svenska | తెలుగు | ไทย | Türkçe | Українська | اردو | Tiếng Việt | Volapük | 中文(简体) | 中文(繁體) | +/-

Some rights reserved
Creative Commons Attribution iconCreative Commons Share Alike icon
This file is licensed under the Creative Commons Attribution ShareAlike license versions 2.5, 2.0, and 1.0

العربية | Česky | Dansk | Deutsch | English | Español | فارسی | Français | Italiano | 日本語 | Nederlands | Polski | Português | Русский | Svenska | Türkçe | 简体中文 | 正體中文 | +/-

You may select the license of your choice.

The following pages on the English Wikipedia link to this file (pages on other projects are not listed):