Example: Arithmetic of the clock

Published 2011-12-22 | Author: Juan Luis Varona

This example shows the products i times j for i and j from 0 to 11 by using arithmetic modulo 12, i.e., the so called arithmetic of the clock.

The results of the products are represented both by the color of the clock and by the hand.

Download as: [PDF] [TEX]  •  [Open in Overleaf]

Arithmetic of the clock

Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de. En français: TeXnique.fr.

% Arithmetic of the clock
% Author: Juan Luis Varona
% http://www.unirioja.es/cu/jvarona/
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
% Colors:
\definecolor{clock0}{cmyk}{1,0,0,0} % cyan
\definecolor{clock1}{cmyk}{0.75,0.25,0,0}
\definecolor{clock2}{cmyk}{0.5,0.5,0,0}
\definecolor{clock3}{cmyk}{0.25,0.75,0,0}
\definecolor{clock4}{cmyk}{0,1,0,0} % magenta
\definecolor{clock5}{cmyk}{0,0.75,0.25,0}
\definecolor{clock6}{cmyk}{0,0,5,0.5,0}
\definecolor{clock7}{cmyk}{0,0.25,0.75,0}
\definecolor{clock8}{cmyk}{0,0,1,0} % yellow
\definecolor{clock9}{cmyk}{0.25,0,0.75,0}
\definecolor{clock10}{cmyk}{0.5,0,0.5,0}
\definecolor{clock11}{cmyk}{0.75,0,0.25,0}
\begin{document}
\newcommand{\clock}[4]{%
  \begin{scope}[xshift=2.25*#1cm,yshift=2.25*#2cm]
  % \filldraw [fill=#3, line width=1.6pt] (0,0) circle (1cm); % simple fill (unused)
  % \draw[fill] (0,0) circle (1mm); % border (unused)
  \shadedraw [inner color=#3!30!white, outer color=#3!90!black, 
    line width=1.6pt] (0,0) circle (1cm); % disk with shadow and border
  \foreach \angle in {0, 30, ..., 330} 
    \draw[line width=1pt] (\angle:0.82cm) -- (\angle:1cm);
  \foreach \angle in {0,90,180,270}
    \draw[line width=1.3pt] (\angle:0.75cm) -- (\angle:1cm);
  \draw[line width=1.6pt] (0,0) -- (90-30*#4:0.6cm); % the hand 
  \end{scope}
}
% Default on latex.ltx: \fboxsep = 3pt \fboxrule = .4pt
\fboxsep = 3pt \fboxrule = 1.5pt 
\newcounter{itimesj}
\fbox{%
\begin{tikzpicture}[scale=0.5]
\begin{scope}[line cap=round]
\foreach \i in {0,...,11}
  \foreach \j in {0,...,11} {
    % We use round by caution, because we are getting real numbers
    \pgfmathparse{round(mod(\i*\j,12))} 
    % \pgfmathresult = 3.0 gives itimesj = 3
    \pgfmathsetcounter{itimesj}{\pgfmathresult} 
    \clock{\i}{-\j}{clock\theitimesj}{\i*\j}; 
  }
\end{scope}
\end{tikzpicture}%
}%
\end{document}

Comments

Adding comments is currently not enabled.

Features
Tags
Scientific and technical areas

Cookbook

LaTeX Beginners Guide

Limited discount 50%
coupon code tDRet6Y

Creative Commons License