No estoy familiarizado con TEX, PGF, etc., pero alguien tuvo la amabilidad de ofrecerme un código para producir algo que me gustaría usar. Lamentablemente, aparece un Dimension too large
error cuando ejecuto el siguiente código. Realmente lamento mi inexperiencia y agradecería cualquier ayuda que pueda recibir para corregir el error:
\documentclass[12pt]{article}
\usepackage[paperwidth=200pt, paperheight=200pt,margin=12pt]{geometry}
\usepackage{color,tikz,ifthen,animate}
\begin{document}
% This code will simulate a pitch based on the 9-parameter PITCHf/x model.
% Written by Matthew Mata, November 2014.
\thispagestyle{empty}
% Set the counter
\newcounter{m}
\setcounter{m}{0}
% Set the 9 PITCHf/x parameters
\pgfmathsetmacro{\xo}{-2.463}
\pgfmathsetmacro{\yo}{50}
\pgfmathsetmacro{\zo}{5.419}
\pgfmathsetmacro{\vxo}{11.609}
\pgfmathsetmacro{\vyo}{-144.84}
\pgfmathsetmacro{\vzo}{-7.734}
\pgfmathsetmacro{\ax}{-19.761}
\pgfmathsetmacro{\ay}{34.528}
\pgfmathsetmacro{\az}{-16.898}
\pgfmathsetmacro{\g}{-32.174}
% Set the time to the plate
\pgfmathsetmacro{\r}{\vyo/\ay}
\pgfmathsetmacro{\s}{2*(\yo-(17/12))/\ay}
\pgfmathsetmacro{\tplate}{-\r - sqrt(\r*\r - \s)}
% Set time of release
\pgfmathsetmacro{\u}{2*(\yo-55)/\ay}
\pgfmathsetmacro{\trel}{-\r - sqrt(\r*\r - \u)}
% Set time from release to plate
\pgfmathsetmacro{\t}{\tplate - \trel}
% Set the number of frames
\pgfmathtruncatemacro{\frames}{int(round(\t*60)+1)}
% Set the time increment
\pgfmathsetmacro{\dt}{\t/(\frames-1)}
% Create the animation
\begin{center}
\begin{animateinline}[poster=first,loop,controls]{60}
\whiledo{\them < \frames}{
\begin{tikzpicture}
% Clip off anything out of frame
\clip (-3,0) rectangle (3,5);
% Sky
\shade[top color = blue!50!white, bottom color = blue!10!white] (-3,5) -- (3,5) -- (3,2.5) -- (-3,2.5) -- cycle;
% Grass
\shade[top color = green!50!black, bottom color = green!70!black] (-3,0) -- (3,0) -- (3,2.447) to [out=179, in =0] (0,2.454) to [out=180, in=1] (-3,2.447) -- (-3,0);
% Batter's Eye
\shade[top color = green!60!black, bottom color = green!30!black] (-0.541,3.176) -- (0.541,3.176) -- (0.541,2.5) -- (-0.541,2.5) -- cycle;
% Bleachers
\draw[fill = blue!50!black] (-3,3.274) to [out=-1, in=180] (-0.541,3.176) -- (-0.541,2.5) -- (-3,2.5) -- cycle;
\draw[fill = blue!50!black] (3,3.274) to [out=181, in=0] (0.541,3.176) -- (0.541,2.5) -- (3,2.5) -- cycle;
% Outfield Wall
\shade[top color = green!40!black, bottom color = green!20!black] (-3,2.447) -- (-3,2.659) to [out=-1, in=180] (0,2.639) to [out=0, in=181] (3,2.659) -- (3,2.447) to [out=179, in =0] (0,2.454) to [out=180, in=1] (-3,2.447);
% Yellow Line
\draw[yellow] (-3,2.659) to [out=-1, in=180] (0,2.639) to [out=0, in=181] (3,2.659);
% Mound
\shade[top color = brown!90!black, bottom color = brown!70!black] (-1.014,2.218) to [out=10, in=180] (0,2.312) to [out=0, in=170] (1.014,2.218) to [out=185, in=0] (0,2.174) to [out = 180, in=355] (-1.014,2.218);
% Pitching Rubber
\draw [white] (-0.113,2.312) -- (0.113,2.312);
% Time increment between pitches
\pgfmathsetmacro{\tinc}{\dt*\them + \trel};
% Current flight time of the pitch
\pgfmathsetmacro{\time}{\dt*\them};
% Location of the pitch at the given time
\pgfmathsetmacro{\xraw}{0.5*\ax*\tinc*\tinc + \vxo*\tinc + \xo};
\pgfmathsetmacro{\yraw}{0.5*\ay*\tinc*\tinc + \vyo*\tinc + \yo};
\pgfmathsetmacro{\zraw}{0.5*\az*\tinc*\tinc + \vzo*\tinc + \zo};
% Velocity of the pitch at the given time
\pgfmathsetmacro{\vx}{\ax*\tinc + \vxo};
\pgfmathsetmacro{\vy}{\ay*\tinc + \vyo};
\pgfmathsetmacro{\vz}{\az*\tinc + \vzo};
\pgfmathsetmacro{\vel}{sqrt((15*\vx/22)*(15*\vx/22) + (15*\vy/22)*(15*\vy/22) + (15*\vz/22)*(15*\vz/22))};
% Projection of the pitch into the strike zone
\pgfmathsetmacro{\xproj}{\vx*(\tplate - \tinc) + \xraw};
\pgfmathsetmacro{\zproj}{0.5*\g*(\tplate - \tinc)*(\tplate - \tinc) + \vz*(\tplate - \tinc) + \zraw};
% Distance to the catcher's viewpoint
\pgfmathsetmacro{\xdist}{\xraw};
\pgfmathsetmacro{\ydist}{\yraw + (73/12)};
\pgfmathsetmacro{\zdist}{\zraw - 2.5};
% Spherical coordinates of the pitch
\pgfmathsetmacro{\rad}{sqrt(\xdist*\xdist + \ydist*\ydist + \zdist*\zdist)};
\pgfmathsetmacro{\theta}{atan2(\xdist,\ydist)};
\pgfmathsetmacro{\phi}{acos(\zdist/\rad)};
\pgfmathsetmacro{\radscale}{7.5/(sin(\theta)*sin(\phi))};
% Location of the pitch from the catcher's perspective
\pgfmathsetmacro{\xscale}{\radscale*cos(\theta)*sin(\phi)};
\pgfmathsetmacro{\zscale}{\radscale*cos(\phi) + 2.5};
\pgfmathsetmacro{\rscale}{(7.5*0.125)/\rad};
% Plot the pitch
\draw[shading = ball, ball color = white] (\xscale,\zscale) circle [radius=\rscale];
% Plot the strike zone
\draw[black!85!white] (-17/24,1.5) -- (17/24,1.5) -- (17/24,3.5) -- (-17/24,3.5) -- cycle;
% Plot the projection
\draw[red!80!white] (\xproj,\zproj) circle [radius=0.125];
% Display the diagnostics
\node[above right] at (-3,4.4) {Dist.: };
\node[above left] at (-1,4.4) {\pgfmathprintnumber[precision=1,fixed]{\yraw}};
\node[above right] at (-1.2,4.4) {ft};
\node[above right] at (0,4.4) {Vel.: };
\node[above left] at (2.1,4.4) {\pgfmathprintnumber[precision=1,fixed]{\vel}};
\node[above left] at (3,4.325) {mph};
\node[above right] at (-3,0) {Time: };
\node[above left] at (-0.9,0) {\pgfmathprintnumber[precision=2,fixed]{\time}};
\node[above right] at (-1.1,0) {sec};
\end{tikzpicture}
\stepcounter{m}
\ifthenelse{\them < \frames}{
\newframe
}
{
\end{animateinline} \relax
}
}
\end{center}
\end{document}