summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/simpleoptics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-07 03:00:49 +0000
committerNorbert Preining <norbert@preining.info>2019-09-07 03:00:49 +0000
commit7345b8683c7cbeaedf53e992fda0b3fa6141084e (patch)
tree3246f6574e0921c2111b93b76720f54034238185 /graphics/pgf/contrib/simpleoptics
parentbd3ecfd29a422ad4d7f8f1e119ddc518494e567a (diff)
CTAN sync 201909070300
Diffstat (limited to 'graphics/pgf/contrib/simpleoptics')
-rw-r--r--graphics/pgf/contrib/simpleoptics/README18
-rw-r--r--graphics/pgf/contrib/simpleoptics/simpleoptics.pdfbin0 -> 96199 bytes
-rw-r--r--graphics/pgf/contrib/simpleoptics/simpleoptics.sty140
-rw-r--r--graphics/pgf/contrib/simpleoptics/simpleoptics.tex474
4 files changed, 632 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/simpleoptics/README b/graphics/pgf/contrib/simpleoptics/README
new file mode 100644
index 0000000000..386a051b2c
--- /dev/null
+++ b/graphics/pgf/contrib/simpleoptics/README
@@ -0,0 +1,18 @@
+%% simpleoptics.zip
+%% Copyright 2019 J. Cawood
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is J. Cawood.
+%
+
+
+This package provides a handful of macros for drawing simple lenses and mirrors for use in optics diagrams. \ No newline at end of file
diff --git a/graphics/pgf/contrib/simpleoptics/simpleoptics.pdf b/graphics/pgf/contrib/simpleoptics/simpleoptics.pdf
new file mode 100644
index 0000000000..474564b3aa
--- /dev/null
+++ b/graphics/pgf/contrib/simpleoptics/simpleoptics.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/simpleoptics/simpleoptics.sty b/graphics/pgf/contrib/simpleoptics/simpleoptics.sty
new file mode 100644
index 0000000000..6d24a6d266
--- /dev/null
+++ b/graphics/pgf/contrib/simpleoptics/simpleoptics.sty
@@ -0,0 +1,140 @@
+%%Author: Justin Cawood
+%%License: LPPL 1.3c
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{simpleoptics}[2019/09/05 v1.0.0 Simple Optics Package]
+\RequirePackage{tikz}
+
+%\mirror{x}{y}{focal length}{height}
+\newcommand{\mirror}[4]{
+
+
+ \pgfmathsetmacro{\mirrorX}{#1}
+ \pgfmathsetmacro{\mirrorY}{#2}
+
+ \pgfmathsetmacro{\mirrorRadius}{2*#3}
+ \pgfmathsetmacro{\mirrorHeight}{\mirrorY + #4}
+
+ \pgfmathsetmacro{\startAngle}{asin(\mirrorHeight/\mirrorRadius)}
+
+ \draw
+
+ (\mirrorX,\mirrorHeight) arc[start angle=180-\startAngle,delta angle=2*\startAngle,radius=\mirrorRadius]
+
+ ;
+}
+
+%\lens{x}{y}{focal length}{height}{thickness}
+\newcommand{\lens}[5]{
+
+
+ \pgfmathsetmacro{\lensX}{#1}
+ \pgfmathsetmacro{\lensY}{#2}
+ \pgfmathsetmacro{\lensRadius}{2*#3}
+ \pgfmathsetmacro{\lensHeight}{#4}
+ \pgfmathsetmacro{\lensThickness}{#5}
+
+ \pgfmathsetmacro{\lensXright}{\lensX +(0.5*\lensThickness)}
+ \pgfmathsetmacro{\lensXleft}{\lensX-(0.5*\lensThickness)}
+
+ \mirror{\lensXleft}{\lensY}{\lensRadius}{\lensHeight}
+ \mirror{\lensXright}{\lensY}{-\lensRadius}{\lensHeight}
+
+ \draw
+
+ (\lensXleft,\lensHeight) -- (\lensXright,\lensHeight)
+ (\lensXright,-\lensHeight) -- (\lensXleft,-\lensHeight)
+
+ ;
+}
+
+%\biconvexlens{x}{y}{focal length}{height}{thickness}
+\newcommand{\biconvexlens}[5]{
+\lens{#1}{#2}{#3}{#4}{#5}
+}
+
+%\biconcavelens{x}{y}{focal length}{height}{thickness}
+\newcommand{\biconcavelens}[5]{
+\lens{#1}{#2}{-#3}{#4}{#5}
+}
+
+%\concaveconvexlens{x}{y}{focal length}{height}{thickness}
+\newcommand{\concaveconvexlens}[5]{
+ \pgfmathsetmacro{\lensX}{#1}
+ \pgfmathsetmacro{\lensY}{#2}
+ \pgfmathsetmacro{\lensRadius}{-2*#3}
+ \pgfmathsetmacro{\lensHeight}{#4}
+ \pgfmathsetmacro{\lensThickness}{#5}
+
+ \pgfmathsetmacro{\lensXright}{\lensX +(0.5*\lensThickness)}
+ \pgfmathsetmacro{\lensXleft}{\lensX-(0.5*\lensThickness)}
+
+ \mirror{\lensXleft}{\lensY}{\lensRadius}{\lensHeight}
+ \mirror{\lensXright}{\lensY}{\lensRadius}{\lensHeight}
+
+ \draw
+
+ (\lensXleft,\lensHeight) -- (\lensXright,\lensHeight)
+ (\lensXright,-\lensHeight) -- (\lensXleft,-\lensHeight)
+
+ ;
+}
+
+%\convexconcavelens{x}{y}{focal length}{height}{thickness}
+\newcommand{\convexconcavelens}[5]{
+\concaveconvexlens{#1}{#2}{-#3}{#4}{#5}
+}
+
+%\rightplanoconvexlens{x}{y}{focal length}{height}{thickness}
+\newcommand{\rightplanoconvexlens}[5]{
+ \pgfmathsetmacro{\lensX}{#1}
+ \pgfmathsetmacro{\lensY}{#2}
+ \pgfmathsetmacro{\lensRadius}{2*#3}
+ \pgfmathsetmacro{\lensHeight}{#4}
+ \pgfmathsetmacro{\lensThickness}{#5}
+
+ \pgfmathsetmacro{\lensXright}{\lensX +(0.5*\lensThickness)}
+ \pgfmathsetmacro{\lensXleft}{\lensX-(0.5*\lensThickness)}
+
+ \mirror{\lensXleft}{\lensY}{\lensRadius}{\lensHeight}
+
+ \draw
+
+ (\lensXleft,\lensHeight) -- (\lensXright,\lensHeight)
+ (\lensXright,-\lensHeight) -- (\lensXleft,-\lensHeight)
+ (\lensXright,\lensHeight) -- (\lensXright,-\lensHeight)
+
+ ;
+}
+
+%\leftplanoconvexlens{x}{y}{focal length}{height}{thickness}
+\newcommand{\leftplanoconvexlens}[5]{
+\pgfmathsetmacro{\lensX}{#1}
+ \pgfmathsetmacro{\lensY}{#2}
+ \pgfmathsetmacro{\lensRadius}{2*#3}
+ \pgfmathsetmacro{\lensHeight}{#4}
+ \pgfmathsetmacro{\lensThickness}{#5}
+
+ \pgfmathsetmacro{\lensXright}{\lensX +(0.5*\lensThickness)}
+ \pgfmathsetmacro{\lensXleft}{\lensX-(0.5*\lensThickness)}
+
+ \mirror{\lensXright}{\lensY}{-\lensRadius}{\lensHeight}
+
+ \draw
+
+ (\lensXleft,\lensHeight) -- (\lensXright,\lensHeight)
+ (\lensXright,-\lensHeight) -- (\lensXleft,-\lensHeight)
+ (\lensXleft,\lensHeight) -- (\lensXleft,-\lensHeight)
+
+ ;
+}
+
+%\rightplanoconcavelens{x}{y}{focal length}{height}{thickness}
+\newcommand{\rightplanoconcavelens}[5]{
+\rightplanoconvexlens{#1}{#2}{-#3}{#4}{#5}
+}
+
+%\leftplanoconcavelens{x}{y}{focal length}{height}{thickness}
+\newcommand{\leftplanoconcavelens}[5]{
+\leftplanoconvexlens{#1}{#2}{-#3}{#4}{#5}
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/simpleoptics/simpleoptics.tex b/graphics/pgf/contrib/simpleoptics/simpleoptics.tex
new file mode 100644
index 0000000000..1ed5ecfe45
--- /dev/null
+++ b/graphics/pgf/contrib/simpleoptics/simpleoptics.tex
@@ -0,0 +1,474 @@
+\documentclass[12pt]{article}
+
+\usepackage[right=1in, top=1in, left=1in, bottom=1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage{hyperref, float}
+\hypersetup{
+ colorlinks=true,
+ linkcolor=blue,
+ filecolor=magenta,
+ urlcolor=cyan,
+}
+
+\usepackage{simpleoptics}
+
+
+\begin{document}
+
+
+\begin{titlepage}
+\vspace*{\fill}
+\begin{center}
+{\Huge Simple Optics Documentation}\\[0.5cm]
+{\Large Version: 1.0.0}\\[0.4cm]
+{\Large Date: $5^{th}$ of September 2019}\\[0.2cm]
+{\small Author: Justin Cawood}
+\end{center}
+\vspace*{\fill}
+\end{titlepage}
+
+\newpage
+
+\tableofcontents
+
+\newpage
+
+\section{Important Info}
+
+All optics diagrams drawn with this package \textbf{must} be contained within a "tikzpicture" environment
+
+Example.
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$mirror\{0\}\{0\}\{-4\}\{3\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\mirror{0}{0}{-4}{3}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Simple mirror example}
+\end{figure}
+
+\section{Quick Macro Reference}
+
+The available macros are
+
+\begin{itemize}
+\item $\backslash$mirror\{x\}\{y\}\{focal length\}\{mirror height\}
+\item $\backslash$leftplanoconvexlens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$rightplanoconvexlens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$leftplanoconcavelens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$rightplanoconcavelens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$biconvexlens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$biconcavelens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$convexconcavelens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\item $\backslash$concaveconvexlens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+\end{itemize}
+
+
+\section{Mirrors}
+
+Mirrors can be drawn using the $\backslash$mirror macro.
+
+The macro takes the following parameters, all of which are required.
+
+$\backslash$mirror\{x\}\{y\}\{focal length\}\{mirror height\}
+
+The parameters x and y are the coordinates for where the mirror will be placed. The focal length and height are simply the focal length and height of the mirror.
+
+If you want to flip the mirror the other way, just specify a negative focal length. Examples of both are done below with the code below each.
+
+
+\begin{minipage}{\textwidth}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\mirror{0}{0}{3}{2}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Positive focal length example}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$mirror\{0\}\{0\}\{3\}\{4\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\mirror{0}{0}{-3}{2}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Negative focal length example}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$mirror\{0\}\{0\}\{-3\}\{4\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\end{minipage}
+
+\section{Lenses}
+
+The lenses are made using mirrors.
+
+There are a few different lenses that can be drawn with this package, each of which has its own macro.
+
+\subsection{Plano Lenses}
+Plano lenses have one flat side and the other side is either convex or concave.
+
+The plano lenses have macros following this format
+
+$\backslash$leftplano"convex/concave"lens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+
+or
+
+$\backslash$rightplano"convex/concave"lens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+
+\subsubsection{Plano-Convex Lenses}
+
+This package provides two plano-covex lens macros. One faces left and the other right. The left and right refer to the flat side of the lens. These are shown below.
+
+\begin{minipage}{\textwidth}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\leftplanoconvexlens{0}{0}{3}{2}{0.3}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Left plano convex lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$leftplanoconvexlens\{0\}\{0\}\{3\}\{4\}\{0.3\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\rightplanoconvexlens{0}{0}{3}{2}{0.3}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Right plano convex lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$rightplanoconvexlens\{0\}\{0\}\{3\}\{4\}\{0.3\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\end{minipage}
+
+\subsubsection{Plano-Concave Lenses}
+
+The same can be done with plano concave lenses. Again there are two available macros. One faces left and the other right. The left and right refer to the flat side of the lens. These are shown below.
+
+\begin{minipage}{\textwidth}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\leftplanoconcavelens{0}{0}{5}{3}{0.5}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Left plano concave lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$leftplanoconcavelens\{0\}\{0\}\{5\}\{3\}\{0.5\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\rightplanoconcavelens{0}{0}{5}{3}{0.5}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Right plano concave lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$rightplanoconcavelens\{0\}\{0\}\{5\}\{3\}\{0.5\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\end{minipage}
+
+\subsection{Bi Lenses}
+
+Bi lenses are made of two mirrors facing opposite directions.
+
+Bi lenses have macros with this format
+
+$\backslash$bi"convex/concave"lens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+
+\subsubsection{Bi-Convex Lens}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\biconvexlens{0}{0}{1}{2}{1}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Bi convex lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$biconvexlens\{0\}\{0\}\{1\}\{2\}\{1\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+
+\subsubsection{Bi-Concave Lens}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\biconcavelens{0}{0}{1}{3}{5}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Bi concave lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$biconcavelens\{0\}\{0\}\{1\}\{3\}\{5\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+
+\subsection{Convex-Concave and Concave-Convex Lenses}
+
+Convex and concave mirrors can be combined to make convex-concave lenses and concave-convex lenses.
+
+They have macros with the format
+
+$\backslash$convexconcavelens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+
+$\backslash$concaveconvexlens\{x\}\{y\}\{focal length\}\{mirror height\}\{thickness\}
+
+\begin{minipage}{\textwidth}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\convexconcavelens{0}{0}{2.5}{3}{0.8}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Convex-Concave lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$convexconcavelens\{0\}\{0\}\{2.5\}\{3\}\{0.8\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\concaveconvexlens{0}{0}{2.5}{3}{0.8}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Concave-Convex lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$concaveconvexlens\{0\}\{0\}\{2.5\}\{3\}\{0.8\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+\end{minipage}
+\end{minipage}
+
+\section{Multiple At Once}
+
+The macros can all be used at the same time to produce diagrams with multiple lenses and/or mirrors.
+
+
+\begin{figure}[H]
+
+\begin{center}
+
+\begin{tikzpicture}
+
+\mirror{1}{0}{2.5}{3}
+\convexconcavelens{3}{0}{2.5}{3}{0.7}
+\biconvexlens{5}{0}{2.5}{3}{0.5}
+\concaveconvexlens{7}{0}{2.5}{3}{0.6}
+\biconcavelens{9}{0}{2.5}{3}{1.3}
+\leftplanoconvexlens{11}{0}{4}{3}{0.5}
+\concaveconvexlens{12}{0}{1}{3}{0.8}
+\rightplanoconcavelens{15}{0}{5}{3}{0.8}
+
+\end{tikzpicture}
+
+\end{center}
+
+\caption{Concave-Convex lens}
+\end{figure}
+
+$\backslash$begin\{center\}
+
+$\backslash$begin\{tikzpicture\}
+
+$\backslash$mirror\{1\}\{0\}\{2.5\}\{3\}
+
+$\backslash$convexconcavelens\{3\}\{0\}\{2.5\}\{3\}\{0.7\}
+
+$\backslash$biconvexlens\{5\}\{0\}\{2.5\}\{3\}\{0.5\}
+
+$\backslash$concaveconvexlens\{7\}\{0\}\{2.5\}\{3\}\{0.6\}
+
+$\backslash$biconcavelens\{9\}\{0\}\{2.5\}\{3\}\{1.3\}
+
+$\backslash$leftplanoconvexlens\{11\}\{0\}\{4\}\{3\}\{0.5\}
+
+$\backslash$concaveconvexlens\{12\}\{0\}\{1\}\{3\}\{0.8\}
+
+$\backslash$rightplanoconcavelens\{15\}\{0\}\{5\}\{3\}\{0.8\}
+
+$\backslash$end\{tikzpicture\}
+
+$\backslash$end\{center\}
+
+
+\end{document} \ No newline at end of file