Add slide rule warm-up
All checks were successful
CI / Typos (pull_request) Successful in 11s
CI / Typst formatting (pull_request) Successful in 6s
CI / Build (pull_request) Successful in 9m17s

This commit is contained in:
Mark 2025-02-13 13:31:38 -08:00
parent b4852e7fcd
commit a10774c116
8 changed files with 25163 additions and 0 deletions

View File

@ -0,0 +1,78 @@
% use [nosolutions] flag to hide solutions.
% use [solutions] flag to show solutions.
\documentclass[
solutions,
shortwarning
]{../../../lib/tex/ormc_handout}
\usepackage{../../../lib/tex/macros}
\usepackage{pdfpages}
\usepackage{sliderule}
\usepackage{changepage}
% Args:
% x, top scale y, label
\newcommand{\slideruleind}[3]{
\draw[
line width=1mm,
draw=black,
opacity=0.3,
text opacity=1
]
({#1}, {#2 + 1})
--
({#1}, {#2 - 1.1})
node [below] {#3};
}
\uptitlel{Advanced}
\uptitler{\smallurl{}}
\title{Warm-Up: Slide Rules}
\subtitle{Prepared by Mark on \today}
\begin{document}
\maketitle
\begin{center}
\begin{minipage}{6cm}
Dad says that anyone who can't use
a slide rule is a cultural illiterate
and should not be allowed to vote.
\vspace{1ex}
\textit{Have Space Suit --- Will Travel, 1958}
\end{minipage}
\end{center}
\hfill
\input{parts/0 logarithms.tex}
\input{parts/1 intro.tex}
\input{parts/2 multiplication.tex}
% Make sure the slide rule is on an odd page,
% so that double-sided printing won't require
% students to tear off problems.
\checkoddpage
\ifoddpage\else
\vspace*{\fill}
\begin{center}
{
\Large
\textbf{This page unintentionally left blank.}
}
\end{center}
\vspace{\fill}
\pagebreak
\fi
\includepdf[
pages=1,
fitpaper=true
]{resources/rule.pdf}
\end{document}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Slide Rules"
[publish]
handout = false
solutions = true

View File

@ -0,0 +1,59 @@
\section{Logarithms}
\problem{}
Evaluate the following by hand:
\begin{enumerate}
\item $\log_{10}{(1000)}$
\vfill
\item $\log_2{(64)}$
\vfill
\item $\log_2{(\frac{1}{4})}$
\vfill
\item $\log_x{(x)}$ for any $x$
\vfill
\item $log_x{(1)}$ for any $x$
\vfill
\end{enumerate}
\problem{}<logids>
Prove the following:
\begin{enumerate}[itemsep=2mm]
\item $\log_b{(b^x)} = x$
\vfill
\item $b^{\log_b{x}} = x$
\vfill
\item $\log_b{(xy)} = \log_b{(x)} + \log_b{(y)}$
\vfill
\item $\log_b{(\frac{x}{y})} = \log_b{(x)} - \log_b{(y)}$
\vfill
\item $\log_b{(x^y)} = y \log_b{(x)}$
\vfill
\end{enumerate}
\begin{instructornote}
A good intro to the following sections is the linear slide rule:
\note{Note that these rules start at 0.}
\begin{center}
\begin{tikzpicture}[scale=0.6]
\linearscale{2}{1}{}
\linearscale{0}{0}{}
\slideruleind
{5}
{1}
{2 + 3 = 5}
\end{tikzpicture}
\end{center}
Take two linear rules, offset one, and you add.
Do the same with a log scale, and you multiply! \\
\linehack{}
After assembling the paper slide rule, you can make a visor with some transparent tape. Wrap a strip around the slide rule, sticky side out, and stick it to itself to form a ring. Cover the sticky side with another layer of tape, and trim the edges to make them straight. Use the edge of the visor to read your slide rule!
\end{instructornote}
\pagebreak

View File

@ -0,0 +1,43 @@
\section{Introduction}
Mathematicians, physicists, and engineers needed to quickly compute products long before computers conquered the world.
\medskip
The \textit{slide rule} is an instrument that uses the logarithm to solve this problem. Before you continue, cut out and assemble your slide rule.
\medskip
There are four scales on your slide rule, each labeled with a letter on the left side:
\def\sliderulewidth{13}
\begin{center}
\begin{tikzpicture}[scale=1]
\tscale{0}{9}{T}
\kscale{0}{8}{K}
\abscale{0}{7}{A}
\abscale{0}{5.5}{B}
\ciscale{0}{4.5}{CI}
\cdscale{0}{3.5}{C}
\cdscale{0}{2}{D}
\lscale{0}{1}{L}
\sscale{0}{0}{S}
\end{tikzpicture}
\end{center}
Each scale's ``generating function'' is on the right:
\begin{itemize}
\item T: $\tan$
\item K: $x^3$
\item A,B: $x^2$
\item CI: $\frac{1}{x}$
\item C, D: $x$
\item L: $\log_{10}(x)$
\item S: $\sin$
\end{itemize}
Once you understand the layout of your slide rule, move on to the next page.
\pagebreak

View File

@ -0,0 +1,299 @@
\section{Multiplication}
We'll use the C and D scales of your slide rule to multiply. \\
Say we want to multiply $2 \times 3$. First, move the \textit{left-hand index} of the C scale over the smaller number, $2$:
\def\sliderulewidth{10}
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(2)}{1}{C}
\cdscale{0}{0}{D}
\end{tikzpicture}
\end{center}
Then we'll find the second number, $3$ on the C scale, and read the D scale under it:
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(2)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(6)}
{1}
{6}
\end{tikzpicture}
\end{center}
Of course, our answer is 6.
\problem{}
What is $1.15 \times 2.1$? \\
Use your slide rule.
\begin{solution}
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(1.15)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(1.15)}
{1}
{1.15}
\slideruleind
{\cdscalefn(1.15) + \cdscalefn(2.1)}
{1}
{2.415}
\end{tikzpicture}
\end{center}
\end{solution}
\vfill
Note that your answer isn't exact. $1.15 \times 2.1 = 2.415$, but an answer accurate within two decimal places is close enough for most practical applications. \\
\pagebreak
Look at your C and D scales again. They contain every number between 1 and 10, but no more than that.
What should we do if we want to calculate $32 \times 210$? \\
\problem{}
Using your slide rule, calculate $32 \times 210$. \\
%\hint{$32 = 3.2 \times 10^1$}
\begin{solution}
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(2.1)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(2.1)}
{1}
{2.1}
\slideruleind
{\cdscalefn(2.1) + \cdscalefn(3.2)}
{1}
{6.72}
\end{tikzpicture}
\end{center}
Placing the decimal point correctly is your job. \\
$10^1 \times 10^2 = 10^3$, so our final answer is $6.72 \times 10^3 = 672$.
\end{solution}
\vfill
%This method of writing numbers is called \textit{scientific notation}. In the form $a \times 10^b$, $a$ is called the \textit{mantissa}, and $b$, the \textit{exponent}. \\
%You may also see expressions like $4.3\text{e}2$. This is equivalent to $4.3 \times 10^2$, but is more compact.
\problem{}
Compute the following:
\begin{enumerate}
\item $1.44 \times 52$
\item $0.38 \times 1.24$
\item $\pi \times 2.35$
\end{enumerate}
\begin{solution}
\begin{enumerate}
\item $1.44 \times 52 = 74.88$
\item $0.38 \times 1.24 = 0.4712$
\item $\pi \times 2.35 = 7.382$
\end{enumerate}
\end{solution}
\vfill
\pagebreak
\problem{}<provemult>
Note that the numbers on your C and D scales are logarithmically spaced.
\def\sliderulewidth{13}
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{0}{1}{C}
\cdscale{0}{0}{D}
\end{tikzpicture}
\end{center}
Why does our multiplication procedure work? \\
%\hint{See \ref{logids}}
\vfill
\pagebreak
Now we want to compute $7.2 \times 5.5$:
\def\sliderulewidth{10}
\begin{center}
\begin{tikzpicture}[scale=0.8]
\cdscale{\cdscalefn(5.5)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(5.5)}
{1}
{5.5}
\slideruleind
{\cdscalefn(5.5) + \cdscalefn(7.2)}
{1}
{???}
\end{tikzpicture}
\end{center}
No matter what order we go in, the answer ends up off the scale. There must be another way. \\
\medskip
Look at the far right of your C scale. There's an arrow pointing to the $10$ tick, labeled \textit{right-hand index}. Move it over the \textit{larger} number, $7.2$:
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(7.2) - \cdscalefn(10)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(7.2)}
{1}
{7.2}
\end{tikzpicture}
\end{center}
Now find the smaller number, $5.5$, on the C scale, and read the D scale under it:
\begin{center}
\begin{tikzpicture}[scale=1]
\cdscale{\cdscalefn(7.2) - \cdscalefn(10)}{1}{C}
\cdscale{0}{0}{D}
\slideruleind
{\cdscalefn(7.2)}
{1}
{7.2}
\slideruleind
{\cdscalefn(3.96)}
{1}
{3.96}
\end{tikzpicture}
\end{center}
Our answer should be about $7 \times 5 = 35$, so let's move the decimal point: $5.5 \times 7.2 = 39.6$. We can do this by hand to verify our answer. \\
\medskip
\problem{}
Why does this work? \par
\hint{Add a second $D$ scale.}
\begin{solution}
Consider the following picture, where I've put two D scales next to each other:
\begin{center}
\begin{tikzpicture}[scale=0.7]
\cdscale{\cdscalefn(7.2) - \cdscalefn(10)}{1}{C}
\cdscale{0}{0}{}
\cdscale{-10}{0}{}
\draw[
draw=black,
]
(0, 0)
--
(0, -0.3)
node [below] {D};
\draw[
draw=black,
]
(-10, 0)
--
(-10, -0.3)
node [below] {D};
\slideruleind
{-10 + \cdscalefn(7.2)}
{1}
{7.2}
\slideruleind
{\cdscalefn(7.2)}
{1}
{7.2}
\slideruleind
{\cdscalefn(3.96)}
{1}
{3.96}
\end{tikzpicture}
\end{center}
\medskip
The second D scale has been moved to the right by $(\log{10})$, so every value on it is $(\log{10})$ smaller than it should be.
\medskip
\medskip
In other words, the answer we get from reverse multiplication is the following: $\log{a} + \log{b} - \log{10}$. \\
This reduces to $\log{(\frac{a \times b}{10})}$, which explains the misplaced decimal point in $7.2 \times 5.5$.
\end{solution}
\vfill
\pagebreak
\problem{}
Compute the following using your slide rule:
\begin{enumerate}
\item $9 \times 8$
\item $15 \times 35$
\item $42.1 \times 7.65$
\item $6.5^2$
\end{enumerate}
\begin{solution}
\begin{enumerate}
\item $9 \times 8 = 72$
\item $15 \times 35 = 525$
\item $42.1 \times 7.65 = 322.065$
\item $6.5^2 = 42.25$
\end{enumerate}
\end{solution}
\vfill
\problem{}
Compute the following using your slide rule. \\
\begin{enumerate}
\item $135 \div 15$
\item $68.2 \div 0.575$
\item $(118 \times 0.51) \div 6.6$
\end{enumerate}
\begin{solution}
\begin{enumerate}
\item $135 \div 15 = 9$
\item $68.2 \div 0.575 = 118.609$
\item $(118 \times 0.51) \div 6.6 = 9.118$
\end{enumerate}
\end{solution}
\vfill
\pagebreak

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 862 KiB

View File

@ -0,0 +1,534 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sliderule}[2022/08/22 Slide rule tools]
\RequirePackage{tikz}
\RequirePackage{ifthen}
% Scale functions:
% See https://sliderulemuseum.com/SR_Scales.htm
%
% l: length of the rule
% n: the number on the rule
%
% A/B: (l/2) * log(n)
% C/D: l / log(n)
% CI: abs(l * log(10 / n) - l)
% K: (l/3) * log(n)
%
% L: n * l
% T: l * log(10 * tan(n))
% S: l * log(10 * sin(n))
\def\sliderulewidth{10}
\def\abscalefn(#1){(\sliderulewidth/2) * log10(#1)}
\def\cdscalefn(#1){(\sliderulewidth * log10(#1))}
\def\ciscalefn(#1){(\sliderulewidth - \cdscalefn(#1))}
\def\kscalefn(#1){(\sliderulewidth/3) * log10(#1)}
\def\lscalefn(#1){(\sliderulewidth * #1)}
\def\tscalefn(#1){(\sliderulewidth * log10(10 * tan(#1)))}
\def\sscalefn(#1){(\sliderulewidth * log10(10 * sin(#1)))}
% Arguments:
% Label
% x of start
% y of start
\newcommand{\linearscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks
\foreach \i in {0,..., 10}{
\draw[black]
({#1 + (\sliderulewidth / 10) * \i}, #2) --
({#1 + (\sliderulewidth / 10) * \i}, #2 + 0.3)
node[above] {\i};
}
% Submarks
\foreach \n in {0, ..., 9} {
\foreach \i in {1,..., 9} {
\ifthenelse{\i=5}{
\draw[black]
({#1 + (\sliderulewidth / 10) * (\n + \i / 10)}, #2) --
({#1 + (\sliderulewidth / 10) * (\n + \i / 10)}, #2 + 0.2);
} {
\draw[black]
({#1 + (\sliderulewidth / 10) * (\n + \i / 10)}, #2) --
({#1 + (\sliderulewidth / 10) * (\n + \i / 10)}, #2 + 0.1);
}
}
}
}
% Arguments:
% Label
% x of start
% y of start
\newcommand{\abscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks 1 - 9
\foreach \i in {1,..., 9}{
\draw[black]
({#1 + \abscalefn(\i)}, #2) --
({#1 + \abscalefn(\i)}, #2 + 0.3)
node[above] {\i};
}
% Numbers and marks 10 - 100
\foreach \i in {1,..., 10}{
\draw[black]
({#1 + \abscalefn(10 * \i)}, #2) --
({#1 + \abscalefn(10 * \i)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\i}};
}
% Submarks 1 - 9
\foreach \n in {1, ..., 9} {
\ifthenelse{\n<5}{
\foreach \i in {1,..., 9}
} {
\foreach \i in {2,4,6,8}
}
{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \abscalefn(\n + \i / 10)}, #2) --
({#1 + \abscalefn(\n + \i / 10)}, #2 + 0.2);
} {
\draw[black]
({#1 + \abscalefn(\n + \i / 10)}, #2) --
({#1 + \abscalefn(\n + \i / 10)}, #2 + 0.1);
}
}
}
% Submarks 10 - 100
\foreach \n in {10,20,...,90} {
\ifthenelse{\n<50}{
\foreach \i in {1,..., 9}
} {
\foreach \i in {2,4,6,8}
}
{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \abscalefn(\n + \i)}, #2) --
({#1 + \abscalefn(\n + \i)}, #2 + 0.2);
} {
\draw[black]
({#1 + \abscalefn(\n + \i)}, #2) --
({#1 + \abscalefn(\n + \i)}, #2 + 0.1);
}
}
}
}
\newcommand{\cdscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks 1 - 10
\foreach \i in {1,..., 10}{
\draw[black]
({#1 + \cdscalefn(\i)}, #2) --
({#1 + \cdscalefn(\i)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\i}};
}
% Submarks 1 - 9
\foreach \n in {1, ..., 9} {
\ifthenelse{\n<3}{
\foreach \i in {5,10,...,95}
} {
\foreach \i in {10,20,...,90}
}
{
\ifthenelse{\i=50}{
\draw[black]
({#1 + \cdscalefn(\n + \i / 100)}, #2) --
({#1 + \cdscalefn(\n + \i / 100)}, #2 + 0.2);
\ifthenelse{\n=1}{
\draw
({#1 + \cdscalefn(\n + \i / 100)}, #2 + 0.2)
node [above] {1.5};
}{}
} {
\ifthenelse{
\i=10 \OR \i=20 \OR \i=30 \OR \i=40 \OR
\i=60 \OR \i=70 \OR \i=80 \OR \i=90
}{
\draw[black]
({#1 + \cdscalefn(\n + \i / 100)}, #2) --
({#1 + \cdscalefn(\n + \i / 100)}, #2 + 0.15);
} {
\draw[black]
({#1 + \cdscalefn(\n + \i / 100)}, #2) --
({#1 + \cdscalefn(\n + \i / 100)}, #2 + 0.1);
}
}
}
}
}
\newcommand{\ciscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks
\foreach \i in {1,...,10}{
\draw[black]
({#1 + \ciscalefn(\i)}, #2) --
({#1 + \ciscalefn(\i)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\ifthenelse{\i=0}{0}{.\i}}};
}
% Submarks 1 - 9
\foreach \n in {1, ..., 9} {
\ifthenelse{\n<3}{
\foreach \i in {5,10,...,95}
} {
\foreach \i in {10,20,...,90}
}
{
\ifthenelse{\i=50}{
\draw[black]
({#1 + \ciscalefn(\n + \i / 100)}, #2) --
({#1 + \ciscalefn(\n + \i / 100)}, #2 + 0.2);
\ifthenelse{\n=1}{
\draw
({#1 + \ciscalefn(\n + \i / 100)}, #2 + 0.2)
node [above] {1.5};
}{}
} {
\ifthenelse{
\i=10 \OR \i=20 \OR \i=30 \OR \i=40 \OR
\i=60 \OR \i=70 \OR \i=80 \OR \i=90
}{
\draw[black]
({#1 + \ciscalefn(\n + \i / 100)}, #2) --
({#1 + \ciscalefn(\n + \i / 100)}, #2 + 0.15);
} {
\draw[black]
({#1 + \ciscalefn(\n + \i / 100)}, #2) --
({#1 + \ciscalefn(\n + \i / 100)}, #2 + 0.1);
}
}
}
}
}
\newcommand{\kscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks 1 - 9
\foreach \i in {1,...,9}{
\draw[black]
({#1 + \kscalefn(\i)}, #2) --
({#1 + \kscalefn(\i)}, #2 + 0.3)
node[above] {\i};
}
% Numbers and marks 10 - 90
\foreach \i in {1,..., 9}{
\draw[black]
({#1 + \kscalefn(10 * \i)}, #2) --
({#1 + \kscalefn(10 * \i)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\i}};
}
% Numbers and marks 100 - 1000
\foreach \i in {1,..., 10}{
\draw[black]
({#1 + \kscalefn(100 * \i)}, #2) --
({#1 + \kscalefn(100 * \i)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\i}};
}
% Submarks 1 - 9
\foreach \n in {1, ..., 9} {
\ifthenelse{\n<4}{
\foreach \i in {1,..., 9}
} {
\foreach \i in {2,4,6,8}
}
{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \kscalefn(\n + \i / 10)}, #2) --
({#1 + \kscalefn(\n + \i / 10)}, #2 + 0.2);
} {
\draw[black]
({#1 + \kscalefn(\n + \i / 10)}, #2) --
({#1 + \kscalefn(\n + \i / 10)}, #2 + 0.1);
}
}
}
% Submarks 10 - 90
\foreach \n in {10,20,...,90} {
\ifthenelse{\n<40}{
\foreach \i in {1,..., 9}
} {
\foreach \i in {2,4,6,8}
}
{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \kscalefn(\n + \i)}, #2) --
({#1 + \kscalefn(\n + \i)}, #2 + 0.2);
} {
\draw[black]
({#1 + \kscalefn(\n + \i)}, #2) --
({#1 + \kscalefn(\n + \i)}, #2 + 0.1);
}
}
}
% Submarks 100 - 1000
\foreach \n in {100,200,...,900} {
\ifthenelse{\n<400}{
\foreach \i in {10,20,...,90}
} {
\foreach \i in {20,40,60,80}
}
{
\ifthenelse{\i=50}{
\draw[black]
({#1 + \kscalefn(\n + \i)}, #2) --
({#1 + \kscalefn(\n + \i)}, #2 + 0.2);
} {
\draw[black]
({#1 + \kscalefn(\n + \i)}, #2) --
({#1 + \kscalefn(\n + \i)}, #2 + 0.1);
}
}
}
}
\newcommand{\lscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks
\foreach \i in {0,..., 10}{
\draw[black]
({#1 + \lscalefn(\i / 10)}, #2) --
({#1 + \lscalefn(\i / 10)}, #2 + 0.3)
node[above] {\ifthenelse{\i=10}{1}{\ifthenelse{\i=0}{0}{.\i}}};
}
% Submarks
\foreach \n in {0, ..., 9} {
\foreach \i in {1,...,19} {
\ifthenelse{\i=10}{
\draw[black]
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2) --
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2 + 0.2);
} {
\ifthenelse{
\i=1 \OR \i=3 \OR \i=5 \OR \i=7 \OR
\i=9 \OR \i=11 \OR \i=13 \OR \i=15 \OR
\i=17 \OR \i=19
}{
\draw[black]
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2) --
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2 + 0.1);
} {
\draw[black]
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2) --
({#1 + \lscalefn((\n + (\i / 20))/10)}, #2 + 0.15);
}
}
}
}
}
\newcommand{\tscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
% First line
\draw[black] ({#1}, #2) -- ({#1}, #2 + 0.2);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks 6 - 10
\foreach \i in {6,...,9,10,15,...,45}{
\draw[black]
({#1 + \tscalefn(\i)}, #2) --
({#1 + \tscalefn(\i)}, #2 + 0.3)
node[above] {\i};
}
% Submarks 6 - 10
\foreach \n in {6, ..., 9} {
\foreach \i in {1,...,9}{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \tscalefn(\n + \i / 10)}, #2) --
({#1 + \tscalefn(\n + \i / 10)}, #2 + 0.2);
} {
\draw[black]
({#1 + \tscalefn(\n + \i / 10)}, #2) --
({#1 + \tscalefn(\n + \i / 10)}, #2 + 0.1);
}
}
}
% Submarks 15 - 45
\foreach \n in {10, 15, ..., 40} {
\foreach \i in {1,...,24}{
\ifthenelse{
\i=5 \OR \i=10 \OR \i=15 \OR \i=20
} {
\draw[black]
({#1 + \tscalefn(\n + \i / 5)}, #2) --
({#1 + \tscalefn(\n + \i / 5)}, #2 + 0.2);
} {
\draw[black]
({#1 + \tscalefn(\n + \i / 5)}, #2) --
({#1 + \tscalefn(\n + \i / 5)}, #2 + 0.1);
}
}
}
}
\newcommand{\sscale}[3]{
\draw[black] ({#1}, #2) -- ({#1 + \sliderulewidth}, #2);
\draw[black] ({#1}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.9);
\draw[black] ({#1}, #2 + 0.9) -- ({#1}, #2 + 0.7);
\draw[black] ({#1 + \sliderulewidth}, #2 + 0.9) -- ({#1 + \sliderulewidth}, #2 + 0.7);
% First line
\draw[black] ({#1}, #2) -- ({#1}, #2 + 0.2);
\draw ({#1 - 0.1}, #2 + 0.5) node[left] {#3};
% Numbers and marks
\foreach \i in {6,...,9,10,15,...,30,40,50,...,60,90}{
\draw[black]
({#1 + \sscalefn(\i)}, #2) --
({#1 + \sscalefn(\i)}, #2 + 0.3)
node[above] {\i};
}
% Submarks 6 - 10
\foreach \n in {6, ..., 9} {
\foreach \i in {1,...,9}{
\ifthenelse{\i=5}{
\draw[black]
({#1 + \sscalefn(\n + \i / 10)}, #2) --
({#1 + \sscalefn(\n + \i / 10)}, #2 + 0.2);
} {
\draw[black]
({#1 + \sscalefn(\n + \i / 10)}, #2) --
({#1 + \sscalefn(\n + \i / 10)}, #2 + 0.1);
}
}
}
% Submarks 15 - 30
\foreach \n in {10, 15, ..., 25} {
\foreach \i in {1,...,24}{
\ifthenelse{
\i=5 \OR \i=10 \OR \i=15 \OR \i=20
} {
\draw[black]
({#1 + \sscalefn(\n + \i / 5)}, #2) --
({#1 + \sscalefn(\n + \i / 5)}, #2 + 0.2);
} {
\draw[black]
({#1 + \sscalefn(\n + \i / 5)}, #2) --
({#1 + \sscalefn(\n + \i / 5)}, #2 + 0.1);
}
}
}
% Submarks 30
\foreach \n in {30} {
\foreach \i in {1,...,19}{
\ifthenelse{
\i=2 \OR \i=4 \OR \i=6 \OR \i=8 \OR
\i=10 \OR \i=12 \OR \i=14 \OR \i=16 \OR
\i=18
} {
\draw[black]
({#1 + \sscalefn(\n + \i / 2)}, #2) --
({#1 + \sscalefn(\n + \i / 2)}, #2 + 0.2);
} {
\draw[black]
({#1 + \sscalefn(\n + \i / 2)}, #2) --
({#1 + \sscalefn(\n + \i / 2)}, #2 + 0.1);
}
}
}
% Submarks 40 - 50
\foreach \n in {40, 50} {
\foreach \i in {1,...,9}{
\ifthenelse{
\i=5 \OR \i=10 \OR \i=15 \OR \i=20
} {
\draw[black]
({#1 + \sscalefn(\n + \i)}, #2) --
({#1 + \sscalefn(\n + \i)}, #2 + 0.2);
} {
\draw[black]
({#1 + \sscalefn(\n + \i)}, #2) --
({#1 + \sscalefn(\n + \i)}, #2 + 0.1);
}
}
}
% Submarks 60
\foreach \i in {1,...,10}{
\ifthenelse{
\i=5 \OR \i=10
} {
\draw[black]
({#1 + \sscalefn(60 + \i * 2)}, #2) --
({#1 + \sscalefn(60 + \i * 2)}, #2 + 0.2);
} {
\draw[black]
({#1 + \sscalefn(60 + \i * 2)}, #2) --
({#1 + \sscalefn(60 + \i * 2)}, #2 + 0.1);
}
}
}