Add slide rule warm-up

This commit is contained in:
Mark 2025-02-13 13:17:22 -08:00
parent 46d44f41de
commit 902ea69d94
7 changed files with 25206 additions and 0 deletions

@ -0,0 +1,77 @@
% use [nosolutions] flag to hide solutions.
% use [solutions] flag to show solutions.
\documentclass[
solutions
]{../../../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}

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

@ -0,0 +1,103 @@
\section{Logarithms}
\definition{}<logdef>
The \textit{logarithm} is the inverse of the exponent. That is, if $b^p = c$, then $\log_b{c} = p$. \\
In other words, $\log_b{c}$ asks the question ``what power do I need to raise $b$ to to get $c$?'' \\
\medskip
In both $b^p$ and $\log_b{c}$, the number $b$ is called the \textit{base}.
\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}
\pagebreak
\definition{}
There are a few ways to write logarithms:
\begin{itemize}
\item[] $\log{x} = \log_{10}{x}$
\item[] $\lg{x} = \log_{10}{x}$
\item[] $\ln{x} = \log_e{x}$
\end{itemize}
\definition{}
The \textit{domain} of a function is the set of values it can take as inputs. \\
The \textit{range} of a function is the set of values it can produce.
\medskip
For example, the domain and range of $f(x) = x$ is $\mathbb{R}$, all real numbers. \\
The domain of $f(x) = |x|$ is $\mathbb{R}$, and its range is $\mathbb{R}^+ \cup \{0\}$, all positive real numbers and 0. \\
\medskip
Note that the domain and range of a function are not always equal.
\problem{}<expdomain>
What is the domain of $f(x) = 5^x$? \\
What is the range of $f(x) = 5^x$?
\vfill
\problem{}<logdomain>
What is the domain of $f(x) = \log{x}$? \\
What is the range of $f(x) = \log{x}$?
\vfill
\pagebreak
\problem{}<logids>
Prove the following identities: \\
\begin{enumerate}[itemsep=2mm]
\item $\log_b{(b^x)} = x$
\item $b^{\log_b{x}} = x$
\item $\log_b{(xy)} = \log_b{(x)} + \log_b{(y)}$
\item $\log_b{(\frac{x}{y})} = \log_b{(x)} - \log_b{(y)}$
\item $\log_b{(x^y)} = y \log_b{(x)}$
\end{enumerate}
\vfill
\begin{instructornote}
A good intro to the following sections is the linear slide rule:
\begin{center}
\begin{tikzpicture}[scale=1]
\linearscale{2}{1}{}
\linearscale{0}{0}{}
\slideruleind
{5}
{1}
{2 + 3 = 5}
\end{tikzpicture}
\end{center}
Take two linear rulers, offset one, and you add. \\
If you do the same with a log scale, you multiply! \\
\vspace{1ex}
Note that the slide rules above start at 0.
\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

@ -0,0 +1,43 @@
\section{Introduction}
Mathematicians, physicists, and engineers needed to quickly solve complex equations even before computers were invented.
\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

@ -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

File diff suppressed because one or more lines are too long

After

(image error) Size: 862 KiB

@ -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);
}
}
}