texlive[72548] Master/texmf-dist: animate (14oct24)
commits+karl at tug.org
commits+karl at tug.org
Mon Oct 14 21:11:51 CEST 2024
Revision: 72548
https://tug.org/svn/texlive?view=revision&revision=72548
Author: karl
Date: 2024-10-14 21:11:51 +0200 (Mon, 14 Oct 2024)
Log Message:
-----------
animate (14oct24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/animate/ChangeLog
trunk/Master/texmf-dist/doc/latex/animate/animate.pdf
trunk/Master/texmf-dist/tex/latex/animate/animate.sty
Added Paths:
-----------
trunk/Master/texmf-dist/source/latex/animate/files/pstmetronome.tex
Modified: trunk/Master/texmf-dist/doc/latex/animate/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/doc/latex/animate/ChangeLog 2024-10-14 19:11:30 UTC (rev 72547)
+++ trunk/Master/texmf-dist/doc/latex/animate/ChangeLog 2024-10-14 19:11:51 UTC (rev 72548)
@@ -1,3 +1,6 @@
+2024-10-14
+ * fix: quoted filenames (issue #23)
+
2024-09-17
* change: `method=widget' now default for extended range of supporting viewers
* fix: documentation revised
Modified: trunk/Master/texmf-dist/doc/latex/animate/animate.pdf
===================================================================
(Binary files differ)
Added: trunk/Master/texmf-dist/source/latex/animate/files/pstmetronome.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/animate/files/pstmetronome.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/animate/files/pstmetronome.tex 2024-10-14 19:11:51 UTC (rev 72548)
@@ -0,0 +1,233 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% animated metronome
+% this code is based to 99.9 percent on the work by Manuel Luque
+% (pstricks.blogspot.com)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+\pst at addfams{pst-metronome}
+\define at key[psset]{pst-metronome}{theta0}{\def\psk at oscmetronomethetai{#1 }}
+\psset[pst-metronome]{theta0=45} % position initiale du metronome
+\define at key[psset]{pst-metronome}{M}{\def\psk at oscmetronometM{#1 }}
+\psset[pst-metronome]{M=25} % masse du disque en g
+\define at key[psset]{pst-metronome}{m}{\def\psk at oscmetronometm{#1 }}
+\psset[pst-metronome]{m=6} % masse du curseur en g
+\define at key[psset]{pst-metronome}{r}{\def\psk at oscmetronomer{#1 }}
+\psset[pst-metronome]{r=1} % rayon du disque en cm
+\define at key[psset]{pst-metronome}{x}{\def\psk at oscmetronomex{#1 }}
+\psset[pst-metronome]{x=8.4} % position du curseur en cm par rapport à l'axe
+\define at key[psset]{pst-metronome}{d}{\def\psk at oscmetronomed{#1 }}
+\psset[pst-metronome]{d=3.2} % distance de l'axe au centre du disque en cm
+\define at key[psset]{pst-metronome}{dt}{\def\psk at oscmetronomedt{#1 }}
+\psset[pst-metronome]{dt=0.01} % pas pour RK4
+\define at key[psset]{pst-metronome}{nT}{\def\psk at oscmetronomenT{#1 }}
+\psset[pst-metronome]{nT=1} % nombre de périodes représentées
+%---- calculer theta(t) et thetapoint(t) --------
+\def\psmetronome{\pst at object{psmetronome}}
+\def\psmetronome at i{%
+\begingroup%
+\use at par%
+ \begin at SpecialObj%
+ \pstVerb{%
+ /deg2rad {180 div 3.14159 mul} def
+ /rad2deg {180 mul 3.14159 div} def
+ /gp 9.8 def % pesanteur
+ /radius \psk at oscmetronomer 1e-2 mul def % en m
+ /OA \psk at oscmetronomed 1e-2 mul def % distance de l'axe au centre du disque en m
+ /xC \psk at oscmetronomex 1e-2 mul def % position du curseur en m par rapport à l'axe
+ /theta0 \psk at oscmetronomethetai def % en degrés
+ /theta0rad theta0 deg2rad def % en radians
+ /Md \psk at oscmetronometM 1e-3 mul def % en kg
+ /mc \psk at oscmetronometm 1e-3 mul def % en kg
+ /dt \psk at oscmetronomedt def
+ /nT \psk at oscmetronomenT def
+ % moment d'inertie du métronome
+ % J=1/2M*R^2+M*a^2+m*x^2
+ /Ji {0.5 Md mul radius dup mul mul Md OA dup mul mul add mc xC dup mul mul add} def
+ /AT {4
+ Ji
+ gp Md OA mul mc xC mul sub mul
+ div
+ sqrt
+ mul} def
+ % Pour le calcul de la période
+ % coefficients de l'approximation polynômiale du calcul
+ % de l'intégrale elliptique
+% coefficient pour le calcul de l'intégrale elliptique
+ /m0 theta0 2 div sin def
+ /m1 {1 m0 dup mul sub} def
+ /m2 {m1 dup mul} def
+ /m3 {m2 m1 mul} def
+ /m4 {m2 dup mul} def
+ /m_1 {1 m1 div} def
+ /EllipticK {
+ 0.5
+ 0.12498593597 m1 mul add
+ 0.06880248576 m2 mul add
+ 0.03328355376 m3 mul add
+ 0.00441787012 m4 mul add
+ m_1 ln mul
+ 1.38629436112 add
+ 0.09666344259 m1 mul add
+ 0.03590092383 m2 mul add
+ 0.03742563713 m3 mul add
+ 0.01451196212 m4 mul add
+ } def
+/Tm {AT EllipticK mul} def
+% tableau des valeurs de theta(t)
+ /W 0 def % vitesse angulaire
+ /theta theta0 def
+ /oscillateur {sin gp Md OA mul mc xC mul sub mul neg mul Ji div} def
+ /j1 {W dt mul} def
+ /k1 {theta oscillateur dt mul} def
+ /j2 {W k1 2 div add dt mul} def
+ /k2 {theta j1 2 div rad2deg add oscillateur dt mul} def
+ /j3 {W k2 2 div add dt mul} def
+ /k3 {theta j2 2 div rad2deg add oscillateur dt mul} def
+ /j4 {W k3 add dt mul} def
+ /k4 {theta j3 rad2deg add oscillateur dt mul} def
+ /theta2 {theta j1 rad2deg 2 j2 rad2deg j3 rad2deg add mul add j4 rad2deg add 6 div add} def
+/tabTheta [ % pour l'animation
+ 0 theta0 % date angle
+dt dt Tm nT mul{ %
+ theta2 %
+ /W2 W k1 2 k2 k3 add mul add k4 add 6 div add def
+ /theta theta2 def
+ /W W2 def
+ } for
+ ] def
+/Nvaleurs tabTheta length 2 div cvi def
+ /W 0 def % vitesse angulaire
+ /theta theta0 def
+/tabThetaGraph [ % pour le graphique theta(t)
+ 0 theta0 % date angle
+0 dt Tm nT mul { % pop
+ theta2 % 180 div 3.14159 mul
+ /W2 W k1 2 k2 k3 add mul add k4 add 6 div add def
+ /theta theta2 def
+ /W W2 def
+ } for
+ ] def
+ /W 0 def % vitesse angulaire
+ /theta theta0 def
+/tabThetaPoint [ % pour le graphique thetapoint(t)
+ 0 0 % date angle
+dt dt Tm nT mul { % pop
+% theta2 % 180 div 3.14159 mul
+ /W2 W k1 2 k2 k3 add mul add k4 add 6 div add def
+ W2
+ /theta theta2 def
+ /W W2 def
+ } for
+ ] def
+/tabXOSC [ % oscillations par min en fonction de x
+0.5 0.1 12 {/xc exch def
+ /xC xc 1e-2 mul def
+ xc 60 Tm div % cvi
+ } for
+ ] def
+/tabXbattements [ % battements par min en fonction de x
+3 0.1 12 {/xc exch def
+ /xC xc 1e-2 mul def
+ xc 60 Tm div 2 mul % cvi
+ } for
+ ] def
+% graduation T --> x
+/tabXT [ % [T,x]
+ 40 1 220 {/batt exch def % battements
+ /Tmetronome2 120 batt div dup mul def
+ /A1 16 mc mul EllipticK dup mul mul def
+ /B1 gp Tmetronome2 mul mc mul def
+ /C1 gp Md mul OA mul Tmetronome2 mul neg
+ 8 Md mul radius dup mul mul 16 Md mul OA dup mul mul add EllipticK dup mul mul add def
+ /Delta B1 dup mul 4 A1 mul C1 mul sub sqrt def
+ /xC1 B1 neg Delta sub 2 div A1 div def
+ /xC2 B1 neg Delta add 2 div A1 div def
+ xC2 0 ge {/posC xC2 def}{/posC xC1 def} ifelse
+ batt posC 1e2 mul
+ } for
+ ] def
+/xT { % pour une valeur particulière battement -> position du curseur
+ /batt exch def
+ /Tmetronome2 120 batt div dup mul def
+ /A1 16 mc mul EllipticK dup mul mul def
+ /B1 gp Tmetronome2 mul mc mul def
+ /C1 gp Md mul OA mul Tmetronome2 mul neg
+ 8 Md mul radius dup mul mul 16 Md mul OA dup mul mul add EllipticK dup mul mul add def
+ /Delta B1 dup mul 4 A1 mul C1 mul sub sqrt def
+ /xC1 B1 neg Delta sub 2 div A1 div def
+ /xC2 B1 neg Delta add 2 div A1 div def
+ xC2 0 ge {/posC xC2 def}{/posC xC1 def} ifelse
+ posC 1e2 mul
+ } def
+/xC \psk at oscmetronomex 1e-2 mul def % position du curseur en m par rapport à l'axe
+/Tm {AT EllipticK mul} def
+ }%
+ \end at SpecialObj%
+\endgroup}
+%
+\def\psmetronomeA{\pst at object{psmetronomeA}}
+\def\psmetronomeA at i{%
+\begingroup%
+\use at par%
+ \begin at SpecialObj%
+ \pstVerb{%
+ /radius \psk at oscmetronomer 1e-2 mul def % en m
+ /OA \psk at oscmetronomed 1e-2 mul def % distance de l'axe au centre du disque en m
+ /xC \psk at oscmetronomex 1e-2 mul def % position du curseur en m par rapport à l'axe
+ }%
+\psframe[fillstyle=solid](! -0.075 \psk at oscmetronomed neg)(0.075,13)
+\pscircle[fillstyle=solid,fillcolor={[rgb]{0.75 0.75 0.75}}](! 0 \psk at oscmetronomed neg){!radius 1e2 mul}
+\pscircle[fillstyle=solid,linewidth=0.05](0,0){0.15}
+\pscircle*[linecolor=red](0,0){0.05}
+% curseur
+\pspolygon[fillstyle=solid](! -0.25 \psk at oscmetronomex 0.5 sub)(! -0.5 \psk at oscmetronomex 0.5 add)(!-0.075 \psk at oscmetronomex 0.5 add)(!-0.075 \psk at oscmetronomex 0.5 sub)
+\pspolygon[fillstyle=solid](! 0.25 \psk at oscmetronomex 0.5 sub)(! 0.5 \psk at oscmetronomex 0.5 add)(!0.075 \psk at oscmetronomex 0.5 add)(!0.075 \psk at oscmetronomex 0.5 sub)
+\pspolygon[fillstyle=solid,fillcolor=gray](! -0.25 \psk at oscmetronomex 0.5 sub)(! -0.3 \psk at oscmetronomex 0.3 sub)(! -0.075 \psk at oscmetronomex 0.3 sub)(!-0.075 \psk at oscmetronomex 0.3 add)(!0.075 \psk at oscmetronomex 0.3 add)(!0.075 \psk at oscmetronomex 0.3 sub)(!0.3 \psk at oscmetronomex 0.3 sub)(!0.25 \psk at oscmetronomex 0.5 sub)
+\pscircle[fillstyle=solid](!-0.125 \psk at oscmetronomex 0.4 sub){0.08}
+\pscircle[fillstyle=solid](!0.125 \psk at oscmetronomex 0.4 sub){0.08}
+% fin curseur
+{\psset{linecolor=red}
+\psline(!-.1 \psk at oscmetronomex)(!0.1 \psk at oscmetronomex)\psline(!0 \psk at oscmetronomex 0.1 sub)(!0 \psk at oscmetronomex 0.1 add)
+\psline(! -.1 \psk at oscmetronomed neg)(!0.1 \psk at oscmetronomed neg)\psline(! 0 \psk at oscmetronomed neg 0.1 sub)(!0 \psk at oscmetronomed neg 0.1 add)}
+\pnode(!0 \psk at oscmetronomex){C}% curseur
+\pnode(! 0 \psk at oscmetronomed neg){D}% disque
+%\pstextpath[c](0,-2ex){\psarcn[linestyle=none](D){1}{180}{0}}{\small\textsf{\textbf{m e t r o n o m e}}}
+%\pstextpath[c](0,1ex){\psarc[linestyle=none](D){1}{180}{0}}{\small\textsf{\textbf{P S t r i c k s}}}
+ \end at SpecialObj%
+\endgroup}
+\psmetronome%
+\pstVerb{/tabTempos [40 42 44 46 48 50 52 54 46 58 60 63 66 69 72 76 80 84 88 92 96 100 104 108 112 116 120 126 132 138 144 152 160 168 176 184 192 200 208] def}%
+
+\def\metronomebody{%
+ \pspolygon[fillstyle=solid,linewidth=2\pslinewidth,linearc=0.5,fillcolor=yellow!30](-5,-4.5)(5,-4.5)(1,14)(-1,14)
+ \psline(1.2,4.5)(1.2,12.5)
+ \psline(-1.2,4.5)(-1.2,12.5)
+ \multido{\i=0+2}{20}{%
+ \pstVerb{/BATT tabTempos \i\space get def}
+ \psline[linecolor=red](!1.2 BATT xT)(!0.7 BATT xT)
+ \uput[r](!0.7 BATT xT){\psPrintValue[PSfont=Helvetica,fontscale=6]{BATT}}
+ }%
+ \multido{\i=1+2}{19}{%
+ \pstVerb{/BATT tabTempos \i\space get def}
+ \psline[linecolor=red](!-1.2 BATT xT)(!-0.7 BATT xT)
+ \uput[r](!-1.3 BATT xT){\psPrintValue[PSfont=Helvetica,fontscale=6]{BATT}}}%
+ \rput(!0 40 xT){\textsf{\tiny GRAVE}}%
+ \rput(!0 46 xT){\textsf{\tiny LARGO}}%
+ \rput(!0 52 xT){\textsf{\tiny LENTO}}%
+ \rput(!0 58 xT){\textsf{\tiny ADAGIO}}%
+ \rput(!0 60 xT){\textsf{\tiny LARGETTO}}%
+ \rput(!0 66 xT){\textsf{\tiny ANDANTE}}%
+ \rput(!0 76 xT){\textsf{\tiny ANDANTINO}}%
+ \rput(!0 84 xT){\textsf{\tiny MODERATO}}%
+ \rput(!0 108 xT){\textsf{\tiny ALLEGRETTO}}%
+ \rput(!0 132 xT){\textsf{\tiny ALLEGRO}}%
+ \rput(!0 160 xT){\textsf{\tiny VIVACE}}%
+ \rput(!0 184 xT){\textsf{\tiny PRESTO}}%
+ \rput(!0 200 xT){\textsf{\tiny PRESTISSIMO}}%
+}
+
+\def\pendulum#1{%
+ \pstVerb{/iA #1\space def /date tabTheta iA get def /Theta tabTheta iA 1 add get def}%
+ \rput{!Theta}{\psmetronomeA}%
+}
+\makeatother
Property changes on: trunk/Master/texmf-dist/source/latex/animate/files/pstmetronome.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/animate/animate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/animate/animate.sty 2024-10-14 19:11:30 UTC (rev 72547)
+++ trunk/Master/texmf-dist/tex/latex/animate/animate.sty 2024-10-14 19:11:51 UTC (rev 72548)
@@ -13,7 +13,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\def\@anim at version{2024/09/17}
+\def\@anim at version{2024/10/14}
\ProvidesPackage{animate}
[\@anim at version\space PDF & SVG animations from files and inline graphics]
@@ -1625,7 +1625,8 @@
\if at anim@controls at stop\setboolean{@anim at controls}{true}\fi%
\if at anim@controls at step\setboolean{@anim at controls}{true}\fi%
\fi%
- \edef\@anim at base{#3}%
+ \Gin at set@curr at file{#3}%
+ \expandafter\edef\expandafter\@anim at base\expandafter{\@curr at file}%
\edef\@anim at first{#4}%
\edef\@anim at last{#5}%
\@anim at checkmultipage{\@anim at base}{\@anim at ftype}%test for multipage file
More information about the tex-live-commits
mailing list.