File:Tautochrone curve.gif
No ''Wikimedia Commons''
Pāriet uz navigāciju
Pāriet uz meklēšanu
Tautochrone_curve.gif (300 × 200 pikseļi, faila izmērs: 102 KB, MIME tips: image/gif, looped, 80 kadri, 3,2 s)
Faila informācija
Strukturētie dati
Captions
Kopsavilkums[labot šo sadaļu]
AprakstsTautochrone 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. |
Datums | 2007. gada 9. maijs; new version 2009. gada augusts |
Avots | Paša darbs |
Autors |
Claudio Rocchini |
GIF veidošana InfoField | This plot was created with Matplotlib. |
Pirmkods 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)
|
Licence[labot šo sadaļu]
Es, šī darba autortiesību īpašnieks, publicēju to saskaņā ar šīm licencēm:
Ir dota atļauja kopēt, izplatīt un/vai pārveidot šo dokumentu saskaņā ar GNU brīvās dokumentācijas licences, versijas 1.2 vai jebkuras vēlākas versijas, ko publiskojis Brīvās programmatūras fonds nosacījumiem; bez nemainīgajām sadaļā, priekšējā un aizmugurēja'vāka tekstiem. Licences kopija ir iekļauta sadaļā ar nosaukumu GNU brīvās dokumentācijas licence.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Šis fails tiek izplatīts saskaņā ar licences Creative Commons Atsauce-Līdzīgi Noteikumi 3.0 Vispārējiem noteikumiem. | ||
| ||
This licensing tag was added to this file as part of the GFDL licensing update.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
Šis fails tiek izplatīts saskaņā ar licences Creative Commons Atsauce 2.5 Vispārējiem noteikumiem.
- Jūs varat brīvi:
- koplietot – kopēt, izplatīt un pārraidīt darbu
- remiksēt – pielāgot darbu
- Saskaņā ar šādiem nosacījumiem:
- atsaucoties – Tev ir jānorāda autors, saite uz licenci un to, vai veiktas kādas izmaiņas. To var darīt jebkādā saprātīgā veidā, bet ne tādā, kas norādītu, ka licencētājs atbalsta tevi vai veidu, kā tu izmanto šo darbu.
Jūs varat izvēlēties licenci pēc jūsu vēlmes.
Faila hronoloģija
Uzklikšķini uz datums/laiks kolonnā esošās saites, lai apskatītos, kā šis fails izskatījās tad.
Datums/Laiks | Attēls | Izmēri | Dalībnieks | Komentārs | |
---|---|---|---|---|---|
tagadējais | 2009. gada 1. augusts, plkst. 13.15 | 300 × 200 (102 KB) | Geek3 (diskusija | devums) | new physically correct version | |
2007. gada 9. maijs, plkst. 06.56 | 300 × 200 (602 KB) | Rocchini (diskusija | devums) | {{Information |Description=Tautochrone curve animation (4 points runs over a cycloid) |Source=Own work |Date=2007-05-09 |Author=Claudio Rocchini |Permission=CC-BY 2.5 }} |
Šo failu nevar pārrakstīt.
Faila lietojums
Šo failu izmanto šajās 5 lapās:
Globālais faila lietojums
Šīs Vikipēdijas izmanto šo failu:
- Izmantojums ar.wikipedia.org
- Izmantojums bn.wikipedia.org
- Izmantojums ca.wikipedia.org
- Izmantojums da.wikipedia.org
- Izmantojums de.wikipedia.org
- Izmantojums de.wikiversity.org
- Izmantojums en.wikipedia.org
- Izmantojums es.wikipedia.org
- Izmantojums fa.wikipedia.org
- Izmantojums fr.wikipedia.org
- Izmantojums fr.wikibooks.org
- Izmantojums fr.wiktionary.org
- Izmantojums he.wikipedia.org
- Izmantojums hr.wikipedia.org
- Izmantojums id.wikipedia.org
- Izmantojums it.wikipedia.org
- Izmantojums ja.wikipedia.org
- Izmantojums kk.wikipedia.org
- Izmantojums ko.wikipedia.org
- Izmantojums lt.wikipedia.org
- Izmantojums lv.wikipedia.org
- Izmantojums nl.wikipedia.org
- Izmantojums nn.wikipedia.org
- Izmantojums no.wikipedia.org
- Izmantojums pl.wikipedia.org
- Izmantojums pt.wikipedia.org
- Izmantojums ro.wikipedia.org
- Izmantojums ru.wikipedia.org
- Izmantojums sl.wikipedia.org
- Izmantojums tr.wikipedia.org
- Izmantojums www.wikidata.org
- Izmantojums zh.wikipedia.org