aboutsummaryrefslogtreecommitdiffstats
path: root/buch/papers/clifford
diff options
context:
space:
mode:
Diffstat (limited to 'buch/papers/clifford')
-rw-r--r--buch/papers/clifford/3d/Makefile38
-rw-r--r--buch/papers/clifford/3d/common.inc271
-rw-r--r--buch/papers/clifford/3d/dq.jpgbin0 -> 135088 bytes
-rw-r--r--buch/papers/clifford/3d/dq.pdfbin0 -> 156514 bytes
-rw-r--r--buch/papers/clifford/3d/dq.pov30
-rw-r--r--buch/papers/clifford/3d/dq.tex51
-rw-r--r--buch/papers/clifford/3d/drehung.jpgbin0 -> 203830 bytes
-rw-r--r--buch/papers/clifford/3d/drehung.pdfbin0 -> 224538 bytes
-rw-r--r--buch/papers/clifford/3d/drehung.pov87
-rw-r--r--buch/papers/clifford/3d/drehung.tex56
-rw-r--r--buch/papers/clifford/3d/q23.jpgbin0 -> 85740 bytes
-rw-r--r--buch/papers/clifford/3d/q23.pov14
-rw-r--r--buch/papers/clifford/3d/q31.jpgbin0 -> 82876 bytes
-rw-r--r--buch/papers/clifford/3d/q31.pov15
-rw-r--r--buch/papers/clifford/3d/qq.pdfbin0 -> 185901 bytes
-rw-r--r--buch/papers/clifford/3d/qq.tex68
-rw-r--r--buch/papers/clifford/images/Makefile13
-rw-r--r--buch/papers/clifford/images/punkte.tex21
-rw-r--r--buch/papers/clifford/images/spiegelung.m66
-rw-r--r--buch/papers/clifford/images/spiegelung.pdfbin0 -> 14637 bytes
-rw-r--r--buch/papers/clifford/images/spiegelung.tex85
21 files changed, 815 insertions, 0 deletions
diff --git a/buch/papers/clifford/3d/Makefile b/buch/papers/clifford/3d/Makefile
new file mode 100644
index 0000000..147ca81
--- /dev/null
+++ b/buch/papers/clifford/3d/Makefile
@@ -0,0 +1,38 @@
+#
+# Makefile
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+all: dq.jpg q23.jpg q31.jpg drehung.jpg dq.pdf qq.pdf drehung.pdf
+
+size="+W3840 +H2160"
+
+dq.png: dq.pov common.inc
+ povray +A0.1 $(size) -Odq.png dq.pov
+dq.jpg: dq.png Makefile
+ convert -extract 1600x1400+1500+60 dq.png -density 300 -units PixelsPerInch dq.jpg
+dq.pdf: dq.jpg dq.tex
+ pdflatex dq.tex
+
+extract="1200x1200+1450+350"
+
+q23.png: q23.pov common.inc
+ povray +A0.1 $(size) -Oq23.png q23.pov
+q23.jpg: q23.png Makefile
+ convert -extract $(extract) q23.png -density 300 -units PixelsPerInch q23.jpg
+
+q31.png: q31.pov common.inc
+ povray +A0.1 $(size) -Oq31.png q31.pov
+q31.jpg: q31.png Makefile
+ convert -extract $(extract) q31.png -density 300 -units PixelsPerInch q31.jpg
+
+qq.pdf: qq.tex q31.jpg q23.jpg
+ pdflatex qq.tex
+
+drehung.png: drehung.pov common.inc
+ povray +A0.1 $(size) -Odrehung.png drehung.pov
+drehung.jpg: drehung.png Makefile
+ convert -extract 1600x1450+1400+50 drehung.png -density 300 -units PixelsPerInch drehung.jpg
+drehung.pdf: drehung.tex drehung.jpg
+ pdflatex drehung.tex
+
diff --git a/buch/papers/clifford/3d/common.inc b/buch/papers/clifford/3d/common.inc
new file mode 100644
index 0000000..55bf6e1
--- /dev/null
+++ b/buch/papers/clifford/3d/common.inc
@@ -0,0 +1,271 @@
+//
+// common.inc
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#version 3.7;
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1
+}
+
+#declare imagescale = 0.14;
+#declare r = 0.02;
+#declare thick = 0.040;
+
+camera {
+ location <40, 12, 15>
+ look_at <0, 0, 0>
+ right 16/9 * x * imagescale
+ up y * imagescale
+}
+
+light_source {
+ <40, 20, 20> color White
+ area_light <1,0,0> <0,0,1>, 10, 10
+ adaptive 1
+ jitter
+}
+
+sky_sphere {
+ pigment {
+ color rgb<1,1,1>
+ }
+}
+
+//
+// draw an arrow from <from> to <to> with thickness <arrowthickness> with
+// color <c>
+//
+#macro arrow(from, to, arrowthickness, c)
+#declare arrowdirection = vnormalize(to - from);
+#declare arrowlength = vlength(to - from);
+union {
+ sphere {
+ from, 1.1 * arrowthickness
+ }
+ cylinder {
+ from,
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ arrowthickness
+ }
+ cone {
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ 2 * arrowthickness,
+ to,
+ 0
+ }
+ pigment {
+ color c
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+#end
+
+
+arrow(< -3, 0, 0 >, < 3, 0, 0 >, r, White)
+arrow(< 0, -3, 0 >, < 0, 3, 0 >, r, White)
+arrow(< 0, 0, -3 >, < 0, 0, 3 >, r, White)
+
+#macro circlearrow0(e1, e2, e3, r1, r2, h, winkel)
+
+mesh {
+ #declare N = 100;
+ #declare phi = 0;
+ #declare phimax = winkel - pi / 12;
+ #declare phistep = (phimax - phi) / N;
+ #while (phi < phimax - phistep/2)
+ triangle {
+ center + r1 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) - h * e3
+ }
+ triangle {
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) - h * e3,
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r2 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) - h * e3
+ }
+ triangle {
+ center + r1 * (cos(phi ) * e1 + sin(phi ) * e2) + h * e3,
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) + h * e3,
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3
+ }
+ triangle {
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3,
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) + h * e3,
+ center + r2 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3
+ }
+ triangle {
+ center + r1 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) - h * e3,
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3
+ }
+ triangle {
+ center + r1 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r1 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3,
+ center + r1 * (cos(phi ) * e1 + sin(phi ) * e2) + h * e3
+ }
+ triangle {
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r2 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) - h * e3,
+ center + r2 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3
+ }
+ triangle {
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) - h * e3,
+ center + r2 * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + h * e3,
+ center + r2 * (cos(phi ) * e1 + sin(phi ) * e2) + h * e3
+ }
+ #declare phi = phi + phistep;
+ #end
+
+ triangle {
+ center + r1 * e1 - h * e3,
+ center + r1 * e1 + h * e3,
+ center + r2 * e1 + h * e3
+ }
+ triangle {
+ center + r2 * e1 - h * e3,
+ center + r2 * e1 + h * e3,
+ center + r1 * e1 - h * e3
+ }
+ triangle {
+ center + r1 * cos(phi) * e1 + r1 * sin(phi) * e2 - h * e3,
+ center + r2 * cos(phi) * e1 + r2 * sin(phi) * e2 - h * e3,
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) - h * e3
+ }
+ triangle {
+ center + r1 * cos(phi) * e1 + r1 * sin(phi) * e2 + h * e3,
+ center + r2 * cos(phi) * e1 + r2 * sin(phi) * e2 + h * e3,
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) + h * e3
+ }
+ triangle {
+ center + r1 * cos(phi) * e1 + r1 * sin(phi) * e2 - h * e3,
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) - h * e3
+ center + r1 * cos(phi) * e1 + r1 * sin(phi) * e2 + h * e3
+ }
+ triangle {
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) - h * e3
+ center + r1 * cos(phi) * e1 + r1 * sin(phi) * e2 + h * e3,
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) + h * e3
+ }
+ triangle {
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) - h * e3,
+ center + r2 * cos(phi) * e1 + r2 * sin(phi) * e2 - h * e3,
+ center + r2 * cos(phi) * e1 + r2 * sin(phi) * e2 + h * e3
+ }
+ triangle {
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) - h * e3,
+ center + r2 * cos(phi) * e1 + r2 * sin(phi) * e2 + h * e3,
+ center + 0.5*(r1+r2) * (cos(phi + pi/12) * e1 + sin(phi + pi/12) * e2) + h * e3
+ }
+
+ pigment {
+ color rgb<1, 0.4, 0.4>
+ }
+}
+
+#end
+
+
+#macro circlearrow(fromdirection, axis, center, r, h, winkel, anzahl)
+
+#declare e1 = vnormalize(fromdirection);
+#declare e2 = -vnormalize(vcross(axis, fromdirection));
+#declare e3 = vnormalize(axis);
+
+#declare r1 = 0.4 * r;
+#declare r2 = r;
+
+#declare w = 0;
+#while (w < anzahl)
+ #declare a = 2 * w * pi / anzahl;
+ circlearrow0(e1 * cos(a) - e2 * sin(a), e1 * sin(a) + e2 * cos(a), e3, r1, r2, 1.2 * h, winkel)
+ #declare w = w + 1;
+#end
+
+mesh {
+ #declare vlu = center - r * e1 - r * e2 - h * e3;
+ #declare vlo = center - r * e1 - r * e2 + h * e3;
+ #declare vru = center - r * e1 + r * e2 - h * e3;
+ #declare vro = center - r * e1 + r * e2 + h * e3;
+ #declare hlu = center + r * e1 - r * e2 - h * e3;
+ #declare hlo = center + r * e1 - r * e2 + h * e3;
+ #declare hru = center + r * e1 + r * e2 - h * e3;
+ #declare hro = center + r * e1 + r * e2 + h * e3;
+ triangle { vlu, vru, vro }
+ triangle { vlu, vro, vlo }
+
+ triangle { vru, hru, hro }
+ triangle { vru, hro, vro }
+
+ triangle { hru, hlu, hlo }
+ triangle { hru, hlo, hro }
+
+ triangle { hlu, vlu, vlo }
+ triangle { hlu, vlo, hlo }
+
+ triangle { vlu, vru, hru }
+ triangle { vlu, hru, hlu }
+
+ triangle { vlo, vro, hro }
+ triangle { vlo, hro, hlo }
+
+ pigment {
+ color rgb<0.6,0.6,1>
+ }
+ finish {
+ specular 0.96
+ metallic
+ }
+}
+
+#if (vlength(axis) > 0.1)
+cone {
+ center + 1.19 * h * e3, r, center + 2 * r * e3, 0
+ pigment {
+ color rgbt<0.6,0.6,1,0.8>
+ }
+}
+#end
+
+cylinder {
+ center, center + 2 * r * e3, 0.04*0.2
+ pigment {
+ color rgb<1.0,0.6,0.6>
+ }
+ finish {
+ specular 0.96
+ metallic
+ }
+}
+
+#end
+
+#macro bogen(v1, v2, center, winkelbogen, farbe)
+
+union {
+ #declare phi = 0;
+ #declare phimax = winkelbogen;
+ #declare phistep = (phimax - phi) / N;
+ #while (phi < phimax - phistep/2)
+ cylinder {
+ cos(phi ) * v1 + sin(phi ) * v2 + center,
+ cos(phi+phistep) * v1 + sin(phi+phistep) * v2 + center,
+ 0.01
+ }
+ sphere {
+ cos(phi ) * v1 + sin(phi ) * v2 + center,
+ 0.01
+ }
+ #declare phi = phi + phistep;
+ #end
+ pigment {
+ color farbe
+ }
+}
+
+#end
diff --git a/buch/papers/clifford/3d/dq.jpg b/buch/papers/clifford/3d/dq.jpg
new file mode 100644
index 0000000..690cfdc
--- /dev/null
+++ b/buch/papers/clifford/3d/dq.jpg
Binary files differ
diff --git a/buch/papers/clifford/3d/dq.pdf b/buch/papers/clifford/3d/dq.pdf
new file mode 100644
index 0000000..797a558
--- /dev/null
+++ b/buch/papers/clifford/3d/dq.pdf
Binary files differ
diff --git a/buch/papers/clifford/3d/dq.pov b/buch/papers/clifford/3d/dq.pov
new file mode 100644
index 0000000..762eee2
--- /dev/null
+++ b/buch/papers/clifford/3d/dq.pov
@@ -0,0 +1,30 @@
+//
+// dq.pov -- Drehung und Quaternion
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#include "common.inc"
+
+arrow(<0,0,0>, <1, sqrt(2), 2>, r, Red)
+
+#declare r = 0.2 * r;
+
+#declare drehwinkel = 0.95 * 2*pi/3 * 3;
+#declare drehwinkel23 = drehwinkel;
+#declare drehwinkel12 = drehwinkel / sqrt(2);
+#declare drehwinkel13 = drehwinkel / 2;
+
+circlearrow(<1,0,0>, <0,0,1>, <1, sqrt(2), 0>, 1, thick, drehwinkel23, 1)
+circlearrow(<1,0,0>, <0,1,0>, <1, 0, 2>, sqrt(2)/2, thick, drehwinkel12, 1)
+circlearrow(<0,0,1>, <1,0,0>, <0, sqrt(2), 2>, 0.5, thick, drehwinkel13, 1)
+
+#declare l = 2.8;
+#declare h = 0.0001;
+union {
+ box { <-l,-l,-h>, <l,l,-h> }
+ box { <-l,-h,-l>, <l,-h,l> }
+ box { <-h,-l,-l>, <-h,l,l> }
+ pigment {
+ color rgbt<0.6,0.6,0.6,0.0>
+ }
+}
diff --git a/buch/papers/clifford/3d/dq.tex b/buch/papers/clifford/3d/dq.tex
new file mode 100644
index 0000000..6b28452
--- /dev/null
+++ b/buch/papers/clifford/3d/dq.tex
@@ -0,0 +1,51 @@
+%
+% dq.tex
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\documentclass[tikz]{standalone}
+\usepackage{times}
+\usepackage{amsmath}
+\usepackage{txfonts}
+\usepackage[utf8]{inputenc}
+\usepackage{graphics}
+\usetikzlibrary{arrows,intersections,math}
+\usepackage{ifthen}
+\begin{document}
+
+\definecolor{darkred}{rgb}{0.7,0,0}
+
+\newboolean{showgrid}
+\setboolean{showgrid}{false}
+\def\breite{6}
+\def\hoehe{6}
+
+\begin{tikzpicture}[>=latex,thick]
+
+% Povray Bild
+\node at (0,0) {\includegraphics[width=12cm]{dq.jpg}};
+
+% Gitter
+\ifthenelse{\boolean{showgrid}}{
+\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw (-\breite,-\hoehe) grid (\breite, \hoehe);
+\fill (0,0) circle[radius=0.05];
+}{}
+
+\node at (-2.8,-2.7) {$O$};
+\node at (4.7,-3.4) {$a_1$};
+\node at (-2.6,5.2) {$a_2$};
+\fill[color=white,opacity=0.7] ({-5.7-0.25},{-4.8-0.15}) rectangle ({-5.7+0.25},{-4.8+0.2});
+\node at (-5.7,-4.8) {$a_3$};
+
+\node[color=blue] at (-3.6,0.8) {$y\mathbf{e}_{23}$};
+\node[color=blue] at (2.1,0.9) {$x\mathbf{e}_{12}$};
+\node[color=blue] at (1.3,-3.7) {$z\mathbf{e}_{13}$};
+
+\node[color=darkred] at (1.3,0.4) {$\vec{q}$};
+
+\end{tikzpicture}
+
+\end{document}
+
diff --git a/buch/papers/clifford/3d/drehung.jpg b/buch/papers/clifford/3d/drehung.jpg
new file mode 100644
index 0000000..2347296
--- /dev/null
+++ b/buch/papers/clifford/3d/drehung.jpg
Binary files differ
diff --git a/buch/papers/clifford/3d/drehung.pdf b/buch/papers/clifford/3d/drehung.pdf
new file mode 100644
index 0000000..bc8036e
--- /dev/null
+++ b/buch/papers/clifford/3d/drehung.pdf
Binary files differ
diff --git a/buch/papers/clifford/3d/drehung.pov b/buch/papers/clifford/3d/drehung.pov
new file mode 100644
index 0000000..b86a2c5
--- /dev/null
+++ b/buch/papers/clifford/3d/drehung.pov
@@ -0,0 +1,87 @@
+//
+// drehung.pov -- Drehung um (1,1,1)
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#include "common.inc"
+
+#declare n = vnormalize(<1,1,1>);
+#declare V = <0,2.6,0>;
+#declare W = <0,0,2.6>;
+
+#declare Vparallel = vdot(n, V) * n;
+#declare Vperp = V - Vparallel;
+#declare Wparallel = vdot(n, W) * n;
+#declare Wperp = W - Wparallel;
+
+arrow(<0,0,0>, 2*n, thick, Red)
+
+arrow(<0,0,0>, V, thick, rgb<0.0,1.0,1.0>)
+arrow(<0,0,0>, W, thick, rgb<0.0,1.0,1.0>)
+
+circlearrow(vnormalize(vcross(<-1,0,1>,n)), -0.01 * <1,1,1>, <0,0,0>, 1, 0.8*thick, 1.98*pi/3, 3)
+
+arrow(<0,0,0>, Vperp, 0.99*thick, Blue)
+arrow(<0,0,0>, Wperp, 0.99*thick, Blue)
+
+arrow(Vperp, V, thick, Green)
+arrow(Wperp, W, thick, Green)
+
+#declare l = 2.4;
+intersection {
+ box { <-l,-l,-l>, <l,l,l> }
+ //cylinder { -n, n, 3 }
+ plane { n, 0.01 }
+ plane { -n, 0.01 }
+ pigment {
+ color rgbt<0.6,0.6,1.0,0.8>
+ }
+}
+
+#declare e1 = vnormalize(Vperp);
+#declare e3 = n;
+#declare e2 = vnormalize(vcross(e3, e1));
+#declare r = vlength(Vperp);
+
+mesh {
+ #declare phi = 0;
+ #declare phimax = 2*pi/3;
+ #declare phistep = (phimax - phi) / N;
+ #while (phi < phimax - phistep/2)
+ triangle {
+ <0,0,0>,
+ r * (cos(phi ) * e1 + sin(phi ) * e2),
+ r * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2)
+ }
+ #declare phi = phi + phistep;
+ #end
+ pigment {
+ color rgbt<0.2,0.2,1.0,0.4>
+ }
+}
+
+mesh {
+ #declare phi = 0;
+ #declare phimax = 2*pi/3;
+ #declare phistep = (phimax - phi) / N;
+ #while (phi < phimax - phistep/2)
+ triangle {
+ r * (cos(phi ) * e1 + sin(phi ) * e2),
+ r * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2),
+ r * (cos(phi ) * e1 + sin(phi ) * e2) + Vparallel
+ }
+ triangle {
+ r * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2),
+ r * (cos(phi ) * e1 + sin(phi ) * e2) + Vparallel,
+ r * (cos(phi+phistep) * e1 + sin(phi+phistep) * e2) + Vparallel
+ }
+ #declare phi = phi + phistep;
+ #end
+ pigment {
+ color rgbt<0.2,1,0.2,0.4>
+ }
+}
+
+bogen(r * e1, r * e2, <0,0,0>, 2*pi/3, Blue)
+bogen(r * e1, r * e2, Vparallel, 2*pi/3, Green)
+
diff --git a/buch/papers/clifford/3d/drehung.tex b/buch/papers/clifford/3d/drehung.tex
new file mode 100644
index 0000000..2ed6789
--- /dev/null
+++ b/buch/papers/clifford/3d/drehung.tex
@@ -0,0 +1,56 @@
+%
+% drehung.tex
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\documentclass[tikz]{standalone}
+\usepackage{times}
+\usepackage{amsmath}
+\usepackage{txfonts}
+\usepackage[utf8]{inputenc}
+\usepackage{graphics}
+\usetikzlibrary{arrows,intersections,math}
+\usepackage{ifthen}
+\begin{document}
+
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+\definecolor{darkred}{rgb}{0.6,0,0}
+
+\newboolean{showgrid}
+\setboolean{showgrid}{false}
+\def\breite{7}
+\def\hoehe{6}
+
+\begin{tikzpicture}[>=latex,thick]
+
+% Povray Bild
+\node at (0,0) {\includegraphics[width=13cm]{drehung.jpg}};
+
+% Gitter
+\ifthenelse{\boolean{showgrid}}{
+\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw (-\breite,-\hoehe) grid (\breite, \hoehe);
+\fill (0,0) circle[radius=0.05];
+}{}
+
+\node at (6.1,-3.3) {$a_1$};
+\node at (-2.0,5.7) {$a_2$};
+\node at (-5.7,-4.9) {$a_3$};
+
+\node[color=white] at (-1.9,4.4) {$\boldsymbol{v}$};
+\node[color=white] at (4.5,-2.7) {$\boldsymbol{v}''$};
+
+\node[color=darkgreen] at (-3.3,4.4) {$\boldsymbol{v}_{\perp}$};
+\node[color=darkgreen] at (4.2,-4.3) {$\boldsymbol{v}''_{\perp}$};
+
+\node[color=blue] at (-3.7,1.5) {$\boldsymbol{v}_{\|}$};
+\node[color=blue] at (1.9,-4.7) {$\boldsymbol{v}''_{\|}$};
+
+\node[color=darkred] at (-1.6,-4.2) {$2\alpha=120^\circ$};
+\node[color=darkred] at (-4.9,-0.6) {$\boldsymbol{q}$};
+
+\end{tikzpicture}
+
+\end{document}
+
diff --git a/buch/papers/clifford/3d/q23.jpg b/buch/papers/clifford/3d/q23.jpg
new file mode 100644
index 0000000..929ef90
--- /dev/null
+++ b/buch/papers/clifford/3d/q23.jpg
Binary files differ
diff --git a/buch/papers/clifford/3d/q23.pov b/buch/papers/clifford/3d/q23.pov
new file mode 100644
index 0000000..2e55c96
--- /dev/null
+++ b/buch/papers/clifford/3d/q23.pov
@@ -0,0 +1,14 @@
+//
+// q23.pov -- Drehung und Quaternion
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#include "common.inc"
+
+circlearrow(<1,0,0>, 0.01*<0,0,-1>, <0, 0, 0>, 1.0, thick, 0.98*pi/2, 4)
+
+bogen( <0,1.7,0>, <-1.7, 0, 0>, <0,0,0>, pi/2, Blue)
+
+arrow( <0,0,0>, <-2.0,0,0>, 0.99*thick, Blue)
+arrow( <0,0,0>, <0,2.0,0>, 0.99*thick, Blue)
+arrow( <0,0,0>, <0,0,2.0>, 0.99*thick, Red)
diff --git a/buch/papers/clifford/3d/q31.jpg b/buch/papers/clifford/3d/q31.jpg
new file mode 100644
index 0000000..c240b4f
--- /dev/null
+++ b/buch/papers/clifford/3d/q31.jpg
Binary files differ
diff --git a/buch/papers/clifford/3d/q31.pov b/buch/papers/clifford/3d/q31.pov
new file mode 100644
index 0000000..4abe1ed
--- /dev/null
+++ b/buch/papers/clifford/3d/q31.pov
@@ -0,0 +1,15 @@
+//
+// q31.pov -- Drehung und Quaternion
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#include "common.inc"
+
+circlearrow(<1,0,0>, 0.01*<0,-1,0>, <0, 0, 0>, 1.0, thick, 0.98*pi/2, 4)
+
+arrow( <0,0,0>, <-2.0,0,0>, 0.99*thick, Blue)
+arrow( <0,0,0>, <0,2.0,0>, 0.99*thick, Red)
+arrow( <0,0,0>, <0,0,2.0>, 0.99*thick, Blue)
+
+bogen( <0,0,1.7>, <-1.7, 0, 0>, <0,0,0>, pi/2, Blue)
+
diff --git a/buch/papers/clifford/3d/qq.pdf b/buch/papers/clifford/3d/qq.pdf
new file mode 100644
index 0000000..fd7dbfa
--- /dev/null
+++ b/buch/papers/clifford/3d/qq.pdf
Binary files differ
diff --git a/buch/papers/clifford/3d/qq.tex b/buch/papers/clifford/3d/qq.tex
new file mode 100644
index 0000000..9baa8bb
--- /dev/null
+++ b/buch/papers/clifford/3d/qq.tex
@@ -0,0 +1,68 @@
+%
+% qq.tex
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\documentclass[tikz]{standalone}
+\usepackage{times}
+\usepackage{amsmath}
+\usepackage{txfonts}
+\usepackage[utf8]{inputenc}
+\usepackage{graphics}
+\usetikzlibrary{arrows,intersections,math}
+\usepackage{ifthen}
+\begin{document}
+
+\definecolor{darkred}{rgb}{0.7,0,0}
+
+\newboolean{showgrid}
+\setboolean{showgrid}{false}
+\def\breite{4}
+\def\hoehe{4}
+
+\begin{tikzpicture}[>=latex,thick]
+
+% Povray Bild
+\begin{scope}[xshift=-3.3cm]
+\node at (0,0) {\includegraphics[width=6.3cm]{q23.jpg}};
+% Gitter
+\ifthenelse{\boolean{showgrid}}{
+\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw (-\breite,-\hoehe) grid (\breite, \hoehe);
+\fill (0,0) circle[radius=0.05];
+}{}
+\fill[color=white,opacity=0.5] ({-0.6-0.3},{-0.2-0.2}) rectangle ({-0.6+0.3},{-0.2+0.2});
+\node[color=darkred] at (-0.6,-0.2) {$\boldsymbol{q}_{23}$};
+\node[color=blue] at (-0.4,2.7) {$\boldsymbol{v}$};
+\node[color=blue] at (0.7,0.4) {$\boldsymbol{v}''_{23}$};
+\node at (3.1,-1.4) {$a_1$};
+\node at (-2.7,-2.4) {$a_3$};
+\node at (-0.7,3.4) {$a_2$};
+\end{scope}
+
+\setboolean{showgrid}{false}
+
+\begin{scope}[xshift=3.3cm]
+\node at (0,0) {\includegraphics[width=6.3cm]{q31.jpg}};
+% Gitter
+\ifthenelse{\boolean{showgrid}}{
+\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe);
+\draw (-\breite,-\hoehe) grid (\breite, \hoehe);
+\fill (0,0) circle[radius=0.05];
+}{}
+\fill[color=white,opacity=0.5] ({-0.7-0.3},{-0.9-0.2}) rectangle ({-0.7+0.3},{-0.9+0.2});
+\node[color=darkred] at (-0.7,-0.9) {$\boldsymbol{q}_{13}$};
+\node[color=blue] at (0.7,0.4) {$\boldsymbol{v}''_{23}$};
+\node[color=blue] at (2.7,-0.7) {$\boldsymbol{v}''$};
+\node at (3.1,-1.4) {$a_1$};
+\node at (-2.7,-2.4) {$a_3$};
+\node at (-0.7,3.4) {$a_2$};
+\end{scope}
+
+
+\end{tikzpicture}
+
+\end{document}
+
diff --git a/buch/papers/clifford/images/Makefile b/buch/papers/clifford/images/Makefile
new file mode 100644
index 0000000..cc621fb
--- /dev/null
+++ b/buch/papers/clifford/images/Makefile
@@ -0,0 +1,13 @@
+#
+# Makefile
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+all: spiegelung.pdf
+
+spiegelung.pdf: spiegelung.tex punkte.tex
+ pdflatex spiegelung.tex
+
+punkte.tex: spiegelung.m
+ octave spiegelung.m
+
diff --git a/buch/papers/clifford/images/punkte.tex b/buch/papers/clifford/images/punkte.tex
new file mode 100644
index 0000000..41d2247
--- /dev/null
+++ b/buch/papers/clifford/images/punkte.tex
@@ -0,0 +1,21 @@
+\coordinate (A) at (2.300,1.700);
+\coordinate (B) at (4.300,2.500);
+\coordinate (C) at (2.800,2.700);
+\coordinate (S) at (3.133,2.300);
+\coordinate (G1) at (0.489,0.873);
+\coordinate (G1oben) at (4.886,8.725);
+\coordinate (G1unten) at (-4.886,-8.725);
+\coordinate (G2) at (0.336,-0.942);
+\coordinate (G2oben) at (3.363,-9.417);
+\coordinate (G2unten) at (-3.363,9.417);
+\coordinate (A1) at (0.248,2.849);
+\coordinate (B1) at (-0.115,4.973);
+\coordinate (C1) at (0.839,3.798);
+\coordinate (S1) at (0.324,3.873);
+\coordinate (A2) at (-1.997,2.048);
+\coordinate (B2) at (-3.061,3.921);
+\coordinate (C2) at (-3.055,2.407);
+\coordinate (S2) at (-2.704,2.792);
+\def\winkela{60.7512}
+\def\winkelb{48.9027}
+\coordinate (G) at (0.489,0.873);
diff --git a/buch/papers/clifford/images/spiegelung.m b/buch/papers/clifford/images/spiegelung.m
new file mode 100644
index 0000000..a086cb5
--- /dev/null
+++ b/buch/papers/clifford/images/spiegelung.m
@@ -0,0 +1,66 @@
+#
+# spiegelung.m
+#
+#
+fn = fopen("punkte.tex", "w");
+
+
+a = [ 2.3; 1.7 ];
+b = [ 4.3; 2.5 ];
+c = [ 2.8; 2.7 ];
+s = (a + b + c)/3;
+
+fprintf(fn, "\\coordinate (A) at (%.3f,%.3f);\n", a(1, 1), a(2, 1));
+fprintf(fn, "\\coordinate (B) at (%.3f,%.3f);\n", b(1, 1), b(2, 1));
+fprintf(fn, "\\coordinate (C) at (%.3f,%.3f);\n", c(1, 1), c(2, 1));
+fprintf(fn, "\\coordinate (S) at (%.3f,%.3f);\n", s(1, 1), s(2, 1));
+
+n1 = [ -2.5; 1.4 ];
+n1 = n1 / norm(n1);
+S1 = eye(2) - 2 * (n1 * n1');
+g1 = [ n1(2,1); -n1(1,1) ];
+
+fprintf(fn, "\\coordinate (G1) at (%.3f,%.3f);\n", g1(1,1), g1(2,1));
+fprintf(fn, "\\coordinate (G1oben) at (%.3f,%.3f);\n", 10*g1(1,1), 10*g1(2,1));
+fprintf(fn, "\\coordinate (G1unten) at (%.3f,%.3f);\n", -10*g1(1,1), -10*g1(2,1));
+
+n2 = [ 1.4; 0.5 ];
+n2 = n2 / norm(n2);
+S2 = eye(2) - 2 * (n2 * n2');
+g2 = [ n2(2,1); -n2(1,1) ];
+
+fprintf(fn, "\\coordinate (G2) at (%.3f,%.3f);\n", g2(1,1), g2(2,1));
+fprintf(fn, "\\coordinate (G2oben) at (%.3f,%.3f);\n", 10*g2(1,1), 10*g2(2,1));
+fprintf(fn, "\\coordinate (G2unten) at (%.3f,%.3f);\n", -10*g2(1,1), -10*g2(2,1));
+
+D = S2 * S1;
+
+a1 = S1 * a;
+b1 = S1 * b;
+c1 = S1 * c;
+s1 = S1 * s;
+
+fprintf(fn, "\\coordinate (A1) at (%.3f,%.3f);\n", a1(1, 1), a1(2, 1));
+fprintf(fn, "\\coordinate (B1) at (%.3f,%.3f);\n", b1(1, 1), b1(2, 1));
+fprintf(fn, "\\coordinate (C1) at (%.3f,%.3f);\n", c1(1, 1), c1(2, 1));
+fprintf(fn, "\\coordinate (S1) at (%.3f,%.3f);\n", s1(1, 1), s1(2, 1));
+
+a2 = D * a;
+b2 = D * b;
+c2 = D * c;
+s2 = D * s;
+
+fprintf(fn, "\\coordinate (A2) at (%.3f,%.3f);\n", a2(1, 1), a2(2, 1));
+fprintf(fn, "\\coordinate (B2) at (%.3f,%.3f);\n", b2(1, 1), b2(2, 1));
+fprintf(fn, "\\coordinate (C2) at (%.3f,%.3f);\n", c2(1, 1), c2(2, 1));
+fprintf(fn, "\\coordinate (S2) at (%.3f,%.3f);\n", s2(1, 1), s2(2, 1));
+
+winkel1 = atan2(g1(2,1), g1(1,1)) * (180 / pi);
+winkel2 = acosd(g1' * g2);
+
+fprintf(fn, "\\def\\winkela{%.4f}\n", winkel1);
+fprintf(fn, "\\def\\winkelb{%.4f}\n", 180 - winkel2);
+
+fprintf(fn, "\\coordinate (G) at (%.3f,%.3f);\n", g1(1,1), g1(2,1));
+
+fclose(fn);
diff --git a/buch/papers/clifford/images/spiegelung.pdf b/buch/papers/clifford/images/spiegelung.pdf
new file mode 100644
index 0000000..a17d369
--- /dev/null
+++ b/buch/papers/clifford/images/spiegelung.pdf
Binary files differ
diff --git a/buch/papers/clifford/images/spiegelung.tex b/buch/papers/clifford/images/spiegelung.tex
new file mode 100644
index 0000000..0960456
--- /dev/null
+++ b/buch/papers/clifford/images/spiegelung.tex
@@ -0,0 +1,85 @@
+%
+% spiegelung.tex -- template for standalon tikz images
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\documentclass[tikz]{standalone}
+\usepackage{amsmath}
+\usepackage{times}
+\usepackage{txfonts}
+\usepackage{pgfplots}
+\usepackage{csvsimple}
+\usetikzlibrary{arrows,intersections,math,calc}
+\begin{document}
+\def\skala{1.1}
+\begin{tikzpicture}[>=latex,thick,scale=\skala]
+
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+
+\def\punkt#1{
+\fill #1 circle[radius=0.06];
+}
+
+\coordinate (M) at (0,0);
+
+\fill[color=blue] (M) circle[radius=0.06];
+\node[color=blue] at (M) [left] {$M$};
+
+\input{punkte.tex}
+
+\fill[color=red!30] (A) -- (B) -- (C) -- cycle;
+\draw[color=red] (A) -- (B) -- (C) -- cycle;
+\node at (A) [below] {$A$};
+\node at (B) [above right] {$B$};
+\node at (C) [above] {$C$};
+\node at (S) {$\circlearrowleft$};
+
+\fill[color=red!30] (A1) -- (B1) -- (C1) -- cycle;
+\draw[color=red] (A1) -- (B1) -- (C1) -- cycle;
+\node at (A1) [below] {$A'$};
+\node at (B1) [above] {$B'$};
+\node at (C1) [above right] {$C'$};
+\node at (S1) {$\circlearrowright$};
+
+\fill[color=red!30] (A2) -- (B2) -- (C2) -- cycle;
+\draw[color=red] (A2) -- (B2) -- (C2) -- cycle;
+\node at (A2) [below] {$A''$};
+\node at (B2) [above] {$B''$};
+\node at (C2) [left] {$C''$};
+\node at (S2) {$\circlearrowleft$};
+
+\draw[color=gray,dotted] (A) -- (A1);
+\draw[color=gray,dotted] (B) -- (B1);
+\draw[color=gray,dotted] (C) -- (C1);
+
+\draw[color=gray,dotted] (A1) -- (A2);
+\draw[color=gray,dotted] (B1) -- (B2);
+\draw[color=gray,dotted] (C1) -- (C2);
+
+\punkt{(A)}
+\punkt{(B)}
+\punkt{(C)}
+\punkt{(A1)}
+\punkt{(B1)}
+\punkt{(C1)}
+\punkt{(A2)}
+\punkt{(B2)}
+\punkt{(C2)}
+
+\fill[color=darkgreen!30] (M) -- (G1) arc ({\winkela}:{\winkela+\winkelb}:1) -- cycle;
+\draw[color=darkgreen] (G1) arc ({\winkela}:{\winkela+\winkelb}:1);
+\node[color=darkgreen] at ({\winkela+0.5*\winkelb}:0.7) {$\alpha$};
+
+\node at ($6*(G1)$) [right] {$g\mathstrut$};
+\node at ($-5.6*(G2)$) [left] {$h\mathstrut$};
+
+\clip (-3,-0.2) rectangle (4.5,5.5);
+
+\draw[line width=1pt] (G1oben) -- (G1unten);
+\draw[line width=1pt] (G2oben) -- (G2unten);
+
+\fill[color=blue] (M) circle[radius=0.06];
+
+\end{tikzpicture}
+\end{document}
+