Está en la página 1de 6

Relojes Analógicos

Javier Serrano
Primavera 2011

1. Introducción
Presentamos un conjunto de comandos cuyo cometido es el de dibujar un
reloj con una hora dada. El reloj puede contener o no los números y puede
elegirse entre mostrar la aguja horaria, el minutero, el segundero o bien cualquier
combinación de ellas. También puede elegirse el color en el que se imprimirá el
reloj.
Para usar estos comandos se requiere la presencia de los paquetes fp (paquete
para hacer cálculos) y pstricks-add (para los dibujos), además del código
correspondiente a los comandos, que aparece en la Sección Implementación.
Los comandos dibujan dos tipos de relojes que es conveniente distinguir:
Reloj continuo: corresponde a los relojes reales, en los que cada aguja
arrastra a la siguiente. Cuando avanza, por ejemplo, el segundero, el mi-
nutero avanza también la parte correspondiente a ese tiempo. También el
segundero arrastra a la aguja horaria y, finalmente, ésta es arrastrada por
el minutero. Al dibujar este tipo de reloj se observará, por ejemplo, que a
las 6:30 la aguja horaria y el minutero no coinciden una sobre otra debido,
precisamente, a este arrastre.
Reloj discreto: cada aguja señalará el valor introducido sin tener en
cuenta los arrastres. Ası́, si se introduce la hora 6:30, la aguja horaria y el
minutero coincidirán una sobre la otra exactamente.

Reloj continuo Reloj discreto

2. Dibujo de un reloj
2.1. Radio del reloj
Lo primero es escribir el radio que tendrá el reloj, es decir, el radio de la
circunferencia que contendrá al reloj. Para ello se usa:

1
Manual de Relojes Javier Serrano

\RadioReloj=long

donde long es el valor del radio, que debe ir seguido de una unidad de longitud.
Por defecto es 6 cm.
Hay que tener en cuenta que el grosor y la longitud de todas las lı́neas (y el
tamaño de los números si se usan) se escalan según sea este valor.

2.2. Dibujo de la carcasa


La carcasa comprende la circunferencia exterior del reloj, la rayitas que mar-
can los minutos y las horas y, si es el caso, los números. Para dibujarla se usa
el comando

\carcasa[numeros]

donde numeros es un argumento optativo que indica si se desean o no números


en nuestro reloj. Si numeros=num entonces se dibujan los números. Si numeros
toma cualquier otro valor entonces no los dibuja. El valor por defecto es num.
Atención: Hay que usar este comando dentro de un entorno pspicture. El
centro del reloj se sitúa siempre en el punto (0, 0) del entorno.

\RadioReloj=3cm
12
\begin{pspicture}(-1.5,-1.5)(1.5,1.5) 11 1
10 2
\carcasa
\end{pspicture} 9 3

8 4
7 5
6

Reloj con números

\RadioReloj=3cm
\begin{pspicture}(-1.5,-1.5)(1.5,1.5)
\carcasa[nonum]
\psdots(0,0) b

\end{pspicture}

Reloj sin números

2.3. Las agujas


Dentro del entorno pspicture donde se dibujó la carcasa del reloj deben es-
cribirse los comandos que dibujan la aguja horaria, el minutero y el segundero.
Los comandos disponibles son los siguientes:

\Segundero{seg}
\Minutero{min}
\Horario{hor}

2
Manual de Relojes Javier Serrano

donde seg es un número entero entre 0 y 59 que representa los segundos, min
es un número entero entre 0 y 59 que representa los minutos y hor es un entero
entre 0 y 11 que representa las horas. Puede usarse uno solo de estos comandos,
dos de ellos o los tres.
El orden en el que se escriban determinará si se trata de un reloj continuo
o discreto. La idea general es que lo que se escriba primero afecta a lo que se
escriba después. Por tanto, para un reloj continuo el orden debe ser: segundero,
minutero y horario. Para un reloj discreto deben escribirse los comandos en
orden contrario.

\RadioReloj=3cm
12
\begin{pspicture}(-1.5,-1.5)(1.5,1.5) 11 1
10 2
\carcasa
\Segundero{30} 9 3

\Minutero{50} 8 4

\Horario{2} 7
6
5

\end{pspicture}
Reloj continuo a las 2h 50m 30s

\RadioReloj=3cm
12
\begin{pspicture}(-1.5,-1.5)(1.5,1.5) 11 1
10 2
\carcasa
\Horario{2} 9 3

\Minutero{50} 8 4

\Segundero{30} 7
6
5

\end{pspicture}
Reloj discreto a las 2h 50m 30s

2.4. Colores en el reloj


En cuanto al color, el reloj se divide en cuatro elementos independientes:
la carcasa (circunferencias exteriores, rayas de división y números) y las tres
agujas. Para asignar un color determinado a cada elemento basta con redefinir
el comando \ColorReloj justo antes del comando que dibuja el elemento. Se
usa con la sintaxis:

\renewcommand{\ColorReloj}{color}

donde color es el nuevo color. El color por defecto de todos los elementos es el
negro (black).

3
Manual de Relojes Javier Serrano

\RadioReloj=3cm
\begin{pspicture}(-1.5,-1.5)(1.5,1.5)
\renewcommand{\ColorReloj}{blue}
\carcasa[nonum]
\renewcommand{\ColorReloj}{red}
\Segundero{30}
\renewcommand{\ColorReloj}{green}
\Minutero{10} Reloj con colores
\Horario{10}
\end{pspicture}

3. Implementación
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% RELOJES ANALÓGICOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VARIABLES:

\newdimen\RadioReloj
\newdimen\AnchoLinea
\newcommand\ColorReloj{black}
\newcount\HoraReloj
\newcount\MinutoReloj
\newcount\SegundoReloj
\newif\ifNumeros

%%%%%%%%%%%%%%%%%%%%%%%% VALORES INICIALES:

\RadioReloj=6cm
\AnchoLinea=.012\RadioReloj

%%%%%%%%%%%%%%%%%%%%%% AGUJA SEGUNDERO:

\newcommand{\Segundero}[1]{%
\SegundoReloj=#1 \FPeval\result{clip(-6*\the\SegundoReloj)}%
\rput{\result}(0,0){%
\psline[linewidth=.5\AnchoLinea,linecolor=\ColorReloj]%
{-}(0,-0.1\RadioReloj)(0,.3\RadioReloj)%
\pscircle[fillstyle=solid,fillcolor=white,linecolor=\ColorReloj]%
(0,0){0.02\RadioReloj}}
}

%%%%%%%%%%%%%%%%%%%%%% AGUJA MINUTERO:

\newcommand{\Minutero}[1]{%
\MinutoReloj=#1%
\FPeval\result{clip(-6*\the\MinutoReloj-0.1*\the\SegundoReloj)}%
\rput{\result}(0,0){%

4
Manual de Relojes Javier Serrano

\psline[linewidth=\AnchoLinea,linecolor=\ColorReloj]%
{->}(0,0)(0,.29\RadioReloj)}%
\pscircle[fillstyle=solid,fillcolor=white,linecolor=\ColorReloj]%
(0,0){0.02\RadioReloj}%
}

%%%%%%%%%%%%%%%%%%%%%% AGUJA HORARIO:

\newcommand{\Horario}[1]{%
\HoraReloj=#1%
\FPeval\result{%
clip(-30*\the\HoraReloj-0.5*\the\MinutoReloj-\the\SegundoReloj/120)}%
\rput{\result}(0,0){%
\psline[linewidth=\AnchoLinea,linecolor=\ColorReloj]%
{->}(0,0)(0,.2\RadioReloj)}
\pscircle[fillstyle=solid,fillcolor=white,linecolor=\ColorReloj]%
(0,0){0.02\RadioReloj}%
}

%%%%%%%%%%%%%%%%%%%%%% CARCASA:

\newcommand{\ponerNumeros}{%
\ifNumeros%
\multido{\n=60+-30,\i=1+1}{12}{%
\rput{\n}(0,0){%
\psline[linewidth=.008\RadioReloj,linecolor=\ColorReloj]%
(.43\RadioReloj,0)(.38\RadioReloj,0)}
\uput{.31\RadioReloj}[\n](0,0){%
\resizebox{!}{.04\RadioReloj}{\textcolor{\ColorReloj}{\i}}}}%
\else%
\multido{\n=0+30}{12}{\rput{\n}(0,0){%
\psline[linewidth=.008\RadioReloj,linecolor=\ColorReloj]%
(.43\RadioReloj,0)(.33\RadioReloj,0)}}%
\fi%
}

\newcommand{\ponernumeros}{%
\Numerostrue \ponerNumeros}

\newcommand{\noponernumeros}{%
\Numerosfalse \ponerNumeros}

\newcommand{\numerossi}{num}

\newcommand{\numerossino}{num}

\newcommand{\carcasa}[1][num]{%
\pscircle[linewidth=\AnchoLinea,linecolor=\ColorReloj]%
(0,0){.5\RadioReloj}%
\pscircle[linewidth=.5\AnchoLinea,linecolor=\ColorReloj]%

5
Manual de Relojes Javier Serrano

(0,0){.45\RadioReloj}%
\multido{\n=0+6}{60}{%
\rput{\n}(0,0){%
\psline[linewidth=.004\RadioReloj,linecolor=\ColorReloj]%
(.43\RadioReloj,0)(.38\RadioReloj,0)%
}%
}
\renewcommand{\numerossino}{#1}%
\ifx \numerossino\numerossi%
\ponernumeros%
\else%
\noponernumeros%
\fi%
}

También podría gustarte