Fil:Tautochrone curve.gif
Fra testwiki
Hopp til navigering
Hopp til søk
Tautochrone_curve.gif (300 × 200 piksler, filstørrelse: 102 KB, MIME-type: image/gif, gjentas, 80 rammer, 3,2 s)
Denne filen er fra Wikimedia Commons og kan brukes av andre prosjekter. Beskrivelsen fra filbeskrivelsessida vises nedenfor.
Beskrivelse
| BeskrivelseTautochrone curve.gif |
A tautochrone curve is the curve for which the time taken by an object sliding without friction in uniform gravity to its lowest point is independent of its starting point. Here, four points at different positions reach the bottom at the same time. In the graphic, s represents arc length, t represents time, and the blue arrows represent acceleration along the trajectory. As the points reach the horizontal, the velocity becomes constant, the arc length being linear to time. |
| Dato | 9. mai 2007; new version august 2009 |
| Kilde | Eget verk |
| Opphavsperson |
Claudio Rocchini |
| GIF utvikling InfoField | |
| Kildekode InfoField | Python code#!/usr/bin/python
# -*- coding: utf8 -*-
'''
animation of balls on a tautochrone curve
'''
import os
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib import animation
from math import *
# settings
fname = 'Tautochrone curve'
width, height = 300, 200
nframes = 80
fps=25
balls = [
{'a':1.0, 'color':'#0000c0'},
{'a':0.8, 'color':'#c00000'},
{'a':0.6, 'color':'#00c000'},
{'a':0.4, 'color':'#c0c000'}]
def curve(phi):
x = phi + sin(phi)
y = 1.0 - cos(phi)
return np.array([x, y])
def animate(nframe, empty=False):
t = nframe / float(nframes - 1.)
# prepare a clean and image-filling canvas for each frame
fig = plt.gcf()
fig.clf()
ax_canvas = plt.gca()
ax_canvas.set_position((0, 0, 1, 1))
ax_canvas.set_xlim(0, width)
ax_canvas.set_ylim(0, height)
ax_canvas.axis('off')
# draw the ramp
x0, y0 = 293, 8
h = 182
npoints = 200
points = []
for i in range(npoints):
phi = i / (npoints - 1.0) * pi - pi
x, y = h/2. * curve(phi) + np.array([x0, y0])
points.append([x, y])
rampline = patches.Polygon(points, closed=False, facecolor='none',
edgecolor='black', linewidth=1.5, capstyle='butt')
points += [[x0-h*pi/2, y0], [x0-h*pi/2, y0+h]]
ramp = patches.Polygon(points, closed=True, facecolor='#c0c0c0', edgecolor='none')
# plot axes
plotw = 0.5
ax_plot = fig.add_axes((0.47, 0.46, plotw, plotw*2/pi*width/height))
ax_plot.set_xlim(0, 1)
ax_plot.set_ylim(0, 1)
for b in balls:
time_array = np.linspace(0, 1, 201)
phi_pendulum_array = (1 - b['a'] * np.cos(time_array*pi/2))
ax_plot.plot(time_array, phi_pendulum_array, '-', color=b['color'], lw=.8)
ax_plot.set_xticks([])
ax_plot.set_yticks([])
ax_plot.set_xlabel('t')
ax_plot.set_ylabel('s')
ax_canvas.add_patch(ramp)
ax_canvas.add_patch(rampline)
for b in balls:
# draw the balls
phi_pendulum = b['a'] * -cos(t * pi/2)
phi_wheel = 2 * asin(phi_pendulum)
phi_wheel = -abs(phi_wheel)
x, y = h/2. * curve(phi_wheel) + np.array([x0, y0])
ax_canvas.add_patch(patches.Circle((x, y), radius=6., zorder=3,
facecolor=b['color'], edgecolor='black'))
ax_plot.plot([t], [1 + phi_pendulum], '.', ms=6., mec='none', mfc='black')
v = h/2. * np.array([1 + cos(phi_wheel), sin(phi_wheel)])
vnorm = v / hypot(v[0], v[1])
# in the harmonic motion, acceleration is proportional to -position
acc_along_line = 38. * -phi_pendulum * vnorm
ax_canvas.arrow(x, y, acc_along_line[0], acc_along_line[1],
head_width=6, head_length=6, fc='#1b00ff', ec='#1b00ff')
fig = plt.figure(figsize=(width/100., height/100.))
print 'saving', fname + '.gif'
#anim = animation.FuncAnimation(fig, animate, frames=nframes)
#anim.save(fname + '.gif', writer='imagemagick', fps=fps)
frames = []
for nframe in range(nframes):
frame = fname + '_{:02}.png'.format(nframe)
animation.FuncAnimation(fig, lambda n: animate(nframe), frames=1).save(
frame, writer='imagemagick')
frames.append(frame)
# assemble animation using imagemagick, this avoids dithering and huge filesize
os.system('convert -delay {} +dither +remap -layers Optimize {} "{}"'.format(
100//fps, ' '.join(['"' + f + '"' for f in frames]), fname + '.gif'))
for frame in frames:
if os.path.exists(frame):
os.remove(frame)
|
Lisensiering
Jeg, rettighetsinnehaver av dette arbeidet, publiserer det herved under følgende lisenser:
| Det tillates at dette dokumentet kopieres, distribueres og/eller modifiseres under retningslinjene som beskrevet i GNU fri dokumentasjonslisens, versjon 1.2 eller senere utgave utgitt av Free Software Foundation; med alle seksjoner, uten noen forsidetekster og baksidetekster. En kopi av lisensen er inkludert i avsnittet GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
| Denne filen er lisensiert under lisensen Creative Commons Navngivelse-DelPåSammeVilkår 3.0 Unported | ||
| ||
| Dette lisensmerket ble lagt til filen som del av lisensoppdateringen av GFDL.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
Denne filene er lisensiert under Creative Commons Navngivelse 2.5 Generisk-lisensen
- Du står fritt:
- til å dele – til å kopiere, distribuere og overføre verket
- til å blande – til å endre verket
- Under de følgende betingelsene:
- navngivelse – Du må kreditere verket på passende vis, lenke til lisensen og indikere hvorvidt det har blitt gjort endringer. Du kan gjøre det på enhver rimelig måte, men ikke på en måte som antyder at lisensgiveren støtter deg eller din bruk av verket.
Du kan velge lisens etter eget valg.
Bildetekster
Legg til en kort forklaring på hva filen representerer
A cycloid is a tautochrone curve. Blue arrows represent the dots' acceleration. In the top right corner graph, t stands for time, and s stands for arc length.
Une cycloïde est une courbe tautochrone. Les flèches bleues représentent l'accélération. Dans le graphique, t est le temps et s l'abscisse curviligne (ou la distance) parcourue.
Elementer som er med i denne fila
motiv
En verdi uten element på Wikidata
9. mai 2007
image/gif
Filhistorikk
Klikk på et tidspunkt for å vise filen slik den var på det tidspunktet.
| Dato/klokkeslett | Miniatyrbilde | Dimensjoner | Bruker | Kommentar | |
|---|---|---|---|---|---|
| nåværende | 1. aug. 2009 kl. 14:15 | 300 × 200 (102 KB) | wikimediacommons>Geek3 | new physically correct version |
Filbruk
Den følgende siden bruker denne filen:
