diff options
Diffstat (limited to 'buch/papers/clifford')
25 files changed, 921 insertions, 158 deletions
diff --git a/buch/papers/clifford/10_Quaternionen.tex b/buch/papers/clifford/10_Quaternionen.tex index 375c6e7..3fe2876 100644 --- a/buch/papers/clifford/10_Quaternionen.tex +++ b/buch/papers/clifford/10_Quaternionen.tex @@ -7,32 +7,39 @@ \rhead{Quaternionen} Wie die komplexen Zahlen eine Erweiterung der reellen Zahlen sind, sind die Quaternionen eine Erweiterung der komplexen Zahlen für den dreidimensionalen Raum. Sie haben, wie die komplexen Zahlen, eine dreh-streckende Eigenschaft. -Sie finden beispielsweise in der Computergraphik und in der Robotik Anwendung. +Sie finden beispielsweise in der Computergrafik und Robotik Anwendung. Die Quaternionen \begin{align} q = w + xi + yj + zk \quad w,x,y,z \in \mathbb{R}\enspace q \in \mathbb{H} \end{align} -können dabei eine Drehstreckung mit dieser Formel erreichen +können dabei eine Drehstreckung mit \begin{align} \label{QuatRot} \begin{split} - &v'' = qvq^{-1};\quad q,v,q^{-1} \in \mathbb{H}\\ - &\operatorname{Re}(q) = \operatorname{Re}(q^{-1})\quad \operatorname{Im}(q) = -\operatorname{Im}(q^{-1}) + v \mapsto v'' = qvq^{-1} \end{split} \end{align} -Auffallend ist hier schon die Ähnlichkeit zu dem Kapitel Rotation. Man könnte sich nun fragen wieso es drei imaginäre Einheiten $i,j,k$ gibt und nicht zwei, was doch näherliegender wäre. Der Grund liegt darin, weil es in der dritten Dimension drei Drehachsen gibt, anstatt nur eine. Wie im Kapitel Rotation beschrieben können wir auch hier die drei Drehungen durch Linearkombinationen von drei Bivektoren beschreiben. In der geometrischen Algebra ist es leicht herauszufinden wie viele Imaginärteile für jede weitere Dimension existieren. Dabei muss man nur die Anzahl der unabhängigen Bivektoren ermitteln. In der vierten Dimension würden es beispielsweise durch alle Vektorkombinationen von $\mathbf{e}_1, \mathbf{e}_2,\mathbf{e}_3, \mathbf{e}_4$ insgesamt 8 Bivektoren existieren (Nicht 16, da $\mathbf{e}_{ij} = -\mathbf{e}_{ji}$ nicht unabhängig voneinander sind). +erreichen, falls $q,v,q^{-1} \in \mathbb{H}$ und die Zusammenhänge +\begin{align} + \operatorname{Re}(q) = \operatorname{Re}(q^{-1})\quad \operatorname{Im}(q) = -\operatorname{Im}(q^{-1}) +\end{align} +gelten. Auffallend ist bei der abbildenden Funktion \eqref{QuatRot} schon die Ähnlichkeit zu \eqref{rotGA} im Kapitel Rotation. Man könnte sich nun fragen wieso es drei imaginäre Einheiten $i,j,k$ gibt und nicht zwei, was doch näherliegender wäre. Der Grund liegt darin, weil es in der dritten Dimension drei Drehachsen gibt, anstatt nur eine. Wie im Kapitel Rotation beschrieben können wir auch hier die drei Drehungen durch Linearkombinationen von drei Bivektoren beschreiben. In der geometrischen Algebra ist es leicht herauszufinden wie viele Imaginärteile für jede weitere Dimension existieren. Dabei muss man nur die Anzahl der unabhängigen Bivektoren ermitteln. In der vierten Dimension würden es beispielsweise durch alle Vektorkombinationen von $\mathbf{e}_1, \mathbf{e}_2,\mathbf{e}_3, \mathbf{e}_4$ insgesamt 8 Bivektoren existieren (Nicht 16, da $\mathbf{e}_{ij} = -\mathbf{e}_{ji}$ nicht unabhängig voneinander sind). -Ohne die geometrische Algebra, haben wir jetzt aber leider ein kleines Problem. Für die Darstellung der Quaternionen bräuchten wir insgesamt vier Achsen. Drei für die imaginären Einheiten und eine für die reelle Einheit. Ein weiterer Nachteil in visueller Hinsicht entsteht beim Anwenden eines Quaternion auf einen Vektor. Sie befinden sich nicht im gleichen Raum und müssen zuerst ineinander umgewandelt werden, um damit zu rechnen, wie man bei $v \in \mathbb{H}$ in der Formel (\ref{QuatRot}) sieht. +Ohne die geometrische Algebra, haben wir jetzt aber leider ein kleines Problem. Für die Darstellung der Quaternionen bräuchten wir insgesamt vier Achsen. Drei für die imaginären Einheiten und eine für die reelle Einheit. Ein weiterer Nachteil in visueller Hinsicht entsteht beim Anwenden eines Quaternion auf einen Vektor. Sie befinden sich nicht im gleichen Raum und müssen zuerst durch +\begin{align} + \mathbf{v} = x\mathbf{\hat{x}} + y\mathbf{\hat{y}} + z \mathbf{\hat{z}} \in \mathbb{R}^3 \enspace\mapsto\enspace v = 0 + xi + yj + zk \in \mathbb{H} +\end{align} +ineinander umgewandelt werden, um damit zu rechnen. \subsection{Geometrische Algebra} -Die geometrische Algebra besitzt die Fähigkeit beide Probleme zu lösen. Die Quaternionen können, wie schon im 2 dimensionalen Fall durch die gerade Grade $G_3^+(\mathbb{R}) \cong \mathbb{H}$ dargestellt werden. Da wir uns jetzt aber in $G_3(\mathbb{R})$ befinden haben wir drei Basisvektoren $\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3$ und können somit drei Bivektoren bilden $\mathbf{e}_{12}, \mathbf{e}_{23}, \mathbf{e}_{31}$. +Die geometrische Algebra kann beide Probleme beheben. Die Quaternionen können, wie schon im zweidimensionalen Fall durch die gerade Grade $G_3^+(\mathbb{R}) \cong \mathbb{H}$ dargestellt werden. Da wir uns jetzt aber in $G_3(\mathbb{R})$ befinden haben wir drei Basisvektoren $\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3$ und können somit drei Bivektoren $\mathbf{e}_{12}, \mathbf{e}_{23}, \mathbf{e}_{31}$ bilden. \begin{definition} - Multivektoren mit Drehstreckenden Eigenschaften in $G_3(\mathbb{R})$ (gleichbedeutend zu Quaternionen) + Die Multivektoren mit Drehstreckenden Eigenschaften in $G_3(\mathbb{R})$ sind \begin{align} - \mathbf{q} = w + x\mathbf{e}_{12} + y\mathbf{e_{23}} + z\mathbf{e_{31}}; \quad w,x,y,z \in \mathbb{R};\enspace \mathbf{q} \in \mathbb{G}_3^+ + \mathbf{q} = w + x\mathbf{e}_{12} + y\mathbf{e}_{23} + z\mathbf{e}_{31} \quad w,x,y,z \in \mathbb{R}\enspace \mathbf{q} \in \mathbb{G}_3^+. \end{align} \end{definition} -Die Probleme werden dadurch gelöst, da wir die Bivektoren im Raum nicht durch einzelne Achsen darstellen müssen, sondern sie als eine orientiere Fläche darstellen können. Anstatt die Vektoren in Quaternionen umzurechnen, können wir jetzt die Vektoren separat im gleichen Raum darstellen. +Die Probleme werden dadurch gelöst, da wir die Bivektoren im Raum nicht durch einzelne Achsen darstellen müssen, sondern sie als eine orientiere Fläche darstellen können. Anstatt die Vektoren in Quaternionen umzurechnen, können wir jetzt die Vektoren separat im gleichen Raum, wie in Abbildung \ref{BildQuaternionen} gezeigt, darstellen. \begin{figure} \centering \begin{tikzpicture} @@ -66,95 +73,76 @@ Die Probleme werden dadurch gelöst, da wir die Bivektoren im Raum nicht durch e \caption{Darstellung eines Quaternion $\mathbf{q}$ und eines Vektors $\mathbf{v}$ im selben Raum} \label{BildQuaternionen} \end{figure} -Wie schon im 2 dimensionalen Fall beschreibt ein Bivektor, um wie viel der um 90 grad gedrehte orginale Vektor gestreckt wird. Dabei dreht jeder Bivektor den Vektor um eine andere Achse. -\\BILD?\\ -In der Computergraphik und Robotik macht eine Drehstreckung aber nicht viel Sinn. Wieso sollte ein Objekt bei einer Drehung zusätzlich noch grösser werden? Darum verwendet man sogenannte Einheitsquaternionen, welche den Betrag $|q|=1$ haben. Sie rotieren die Objekte bzw. Vektoren lediglich. +Wie schon im zweidimensionalen Fall \eqref{GAdrehstreck} beschreibt im dreidimensionalen Fall mit drei Bivektoren +\begin{align} + \mathbf{qv} &= (w + x\mathbf{e}_{12} + y\mathbf{e}_{23} + z\mathbf{e}_{31})(a\mathbf{e}_1+b\mathbf{e}_2+c\mathbf{e}_3)\\ + &= \underbrace{w(a\mathbf{e}_1+b\mathbf{e}_2+c\mathbf{e}_3)}_{w\mathbf{v}} + \underbrace{x(-a\mathbf{e}_2+b\mathbf{e}_1}_{x\mathbf{v}_{\angle 90^\circ, \parallel \mathbf{e}_{12}}}+c\mathbf{e}_{123}) + \underbrace{y(-b\mathbf{e}_3+c\mathbf{e}_2}_{y\mathbf{v}_{\angle 90^\circ, \parallel \mathbf{e}_{23}}}+a\mathbf{e}_{123}) + \underbrace{z(a\mathbf{e}_3-c\mathbf{e}_1}_{z\mathbf{v}_{\angle 90^\circ, \parallel \mathbf{e}_{31}}}-b\mathbf{e}_{123}) +\end{align} +jeder Bivektoranteil, um wie viel der um 90° gedrehte zu der Ebene parallele Teil des Vektors gestreckt wird. Dabei dreht jeder Bivektor den Vektor um eine andere Achse und man sieht die dreh-streckende Eigenschaft ähnlich zu den komplexen Zahlen. Der störende Trivektoranteil $(xc+ya+zb)\mathbf{e}_{123}$ bekommt man aber nur weg, indem man noch wie in der Rotationsformel \eqref{QuatRot} den Inversen Quaternion $\mathbf{q}^{-1}$ anschliessend multipliziert, wobei die dreh-gestreckten parallelen Anteile nochmals um den gleichen Faktor dreh-gestreckt werden. Da nur so der Trivektoranteil wegfällt, sieht man, dass die Rotationsformel, der einzige Vernünftige weg ist, mit Quaternionen zu arbeiten. + +In der Computergraphik und Robotik macht eine Drehstreckung aber nicht viel Sinn. Wieso sollte ein Objekt bei einer Drehung zusätzlich noch grösser werden? Darum verwendet man sogenannte Einheitsquaternionen, welche den Betrag $|\mathbf{q}|=1$ haben und somit rotieren sie die Objekte bzw. Vektoren lediglich. \begin{definition} - Einheitsquaternionen + Die Einheitsquaternionen sind definiert als \begin{align} \mathbf{q} = \cos(\alpha) + sin(\alpha)(\tilde{x}\mathbf{e}_{12} + \tilde{y}\mathbf{e}_{23} + \tilde{z}\mathbf{e}_{31}) \end{align} \end{definition} -Dabei ist definiert, dass $\tilde{x}^2+\tilde{y}^2+\tilde{z}^2=1$. Somit beträgt der Betrag von $\mathbf{q}$ immer 1. +Zudem setzten wir $\tilde{x}^2+\tilde{y}^2+\tilde{z}^2=1$, damit \begin{align} - |\mathbf{q}| = \sqrt{cos(\alpha)^2 + sin(\alpha)^2(\tilde{x}^2+\tilde{y}^2+\tilde{z}^2) } = \sqrt{cos(\alpha)^2 + sin(\alpha)^2} = 1 + |\mathbf{q}| = \sqrt{cos(\alpha)^2 + sin(\alpha)^2(\tilde{x}^2+\tilde{y}^2+\tilde{z}^2) } = \sqrt{cos(\alpha)^2 + sin(\alpha)^2} = 1. \end{align} -Der Winkel $\alpha$ beschreibt dabei, wie im Bild (...) gezeigt den halben Winkel, um welchen der parallelen Anteil $\mathbf{v_{\perp}}$ des Vektors $\mathbf{v}$ zur kombinierten Bivektorebene $sin(\alpha)^2(\tilde{x}^2+\tilde{y}^2+\tilde{z}^2)$ gedreht wird. +Der Winkel $\alpha$ beschreibt dabei, wie im Bild \ref{BildQuaternionBeispiel2} gezeigt den halben Winkel, um welchen der parallelen Anteil $\mathbf{v_{\parallel}}$ des Vektors $\mathbf{v}$ zur kombinierten Bivektorebene $sin(\alpha)^2(\tilde{x}\mathbf{e}_{12} + \tilde{y}\mathbf{e}_{23} + \tilde{z}\mathbf{e}_{31})$ gedreht wird. -Um einen Vektor zu drehen, verwendet man wieder die gleiche Formel, wie auch schon im zweidimensionalen Fall. +Um einen Vektor zu drehen, verwendet man die in Kapitel Rotation hergeleitete Formel \begin{align} \label{QuatRotGA} \begin{split} - &\mathbf{v}'' = \mathbf{qvq}^{-1}\\ - &\operatorname{Re}(\mathbf{q}) = \operatorname{Re}(\mathbf{q}^{-1});\enspace \operatorname{Im}(\mathbf{q}) = -\operatorname{Im}(\mathbf{q}^-1) + \mathbf{v}'' = \mathbf{qvq}^{-1}, \end{split} \end{align} -Es ist wichtig bei Quaternionen für eine reine Drehstreckung mit $q$ und $q^{-1}$ beidseitig zu multiplizieren, sonst werden die senkrechten Anteile zu den Bivektorebenen ebenfalls beeinflusst, wie man im Kapitel Rotation bei der Formel (\ref{RotAufPerpPar}) sehen kann. +wobei wie auch schon bei den Quaternionen gelten muss, dass +\begin{align} \label{GAReIm} + \operatorname{Re}(\mathbf{q}) = \operatorname{Re}(\mathbf{q}^{-1}) \enspace\text{und}\enspace \operatorname{Im}(\mathbf{q}) = -\operatorname{Im}(\mathbf{q}^-1). +\end{align} +Der Grund für die Zusammenhänge \eqref{GAReIm} kann man durch die hergeleitete vereinfachte Rotationsformel \eqref{GAvereinfRot} sehen, weil durch den negierten Winkel $\theta$ der Reelle bzw. Grad 0 Anteil +\begin{align} + \operatorname{Re}(e^{-\theta \mathbf{e}_{12}}) = \operatorname{Re}(e^{\theta \mathbf{e}_{12}}) +\end{align} +und der Imaginäre bzw. Grad 2 Anteil +\begin{align} + \operatorname{Im}(e^{-\theta \mathbf{e}_{12}}) = -\operatorname{Im}(e^{\theta \mathbf{e}_{12}}) +\end{align} +ist. Durch die geometrische Algebra sieht man nun wieso es wichtig ist bei Quaternionen für eine reine Drehstreckung mit $\mathbf{q}$ und $\mathbf{q}^{-1}$ beidseitig zu multiplizieren, sonst werden die senkrechten Anteile zu den Bivektorebenen ebenfalls beeinflusst, wie man im Kapitel Rotation bei der Formel (\ref{RotAufPerpPar}) sehen kann. \begin{beispiel} - Eine Drehung eines Vektors $\mathbf{v}= 1\mathbf{e}_2$ um 90 Grad um die $\mathbf{e}_1$-Achse und danach 90 Grad um die $\mathbf{e}_2$-Achse. Dafür nehmen wir zuerst einen Einheitsquaternion welcher um die Orientierte Ebene $\mathbf{e}_{23}$ um 90 Grad dreht + Eine Drehung eines Vektors $\mathbf{v}= 1\mathbf{e}_2$ um 90 Grad um die $\mathbf{e}_1$-Achse und danach 90 Grad um die $\mathbf{e}_2$-Achse. Dafür nehmen wir zuerst einen Einheitsquaternion \begin{align} - \mathbf{q}_{23} &= \cos(\pi/4) + sin(\pi/4)(1\mathbf{e}_{23}) = e^{(\pi/4)\mathbf{e}_{23}} &= 0.71 + 0.71\mathbf{e}_{23}\\ - \mathbf{q}_{23}^{-1} &&= 0.71 - 0.71\mathbf{e}_{23} + \mathbf{q}_{23} &= \cos(\pi/4) + sin(\pi/4)(1\mathbf{e}_{23}) = e^{(\pi/4)\mathbf{e}_{23}} &= \textstyle{\frac{\sqrt{2}}{2}}(1 + \mathbf{e}_{23})\\ + \mathbf{q}_{23}^{-1} &&= \textstyle{\frac{\sqrt{2}}{2}} (1- \mathbf{e}_{23}) \end{align} - und danach Einheitsquaternion welcher um die Orientierte Ebene $\mathbf{e}_{31}$ um 90 Grad dreht + welcher um die $\mathbf{e}_{2}$-$\mathbf{e}_{3}$-Ebene um 90 Grad dreht und danach Einheitsquaternion \begin{align} - \mathbf{q}_{31} &= \cos(\pi/4) + sin(\pi/4)(1\mathbf{e}_{31}) = e^{(\pi/4)\mathbf{e}_{31}} &= 0.71 + 0.71\mathbf{e}_{31}\\ - \mathbf{q}_{31}^{-1} &&= 0.71 - 0.71\mathbf{e}_{31} + \mathbf{q}_{31} &= \cos(\pi/4) + sin(\pi/4)(1\mathbf{e}_{31}) = e^{(\pi/4)\mathbf{e}_{31}} &= \textstyle{\frac{\sqrt{2}}{2}}(1 + \mathbf{e}_{31})\\ + \mathbf{q}_{31}^{-1} &&= \textstyle{\frac{\sqrt{2}}{2}}(1 - \mathbf{e}_{31}) \end{align} - Um die vollständige Rotation zu beschreiben können die Einheitsquaternion multipliziert werden, wobei die Reihenfolge der Ausführung beachtet werden muss + welcher um die $\mathbf{e}_{3}$-$\mathbf{e}_{1}$-Ebene um 90 Grad dreht. Um die vollständige Rotation zu beschreiben können die Einheitsquaternion multipliziert werden, wobei die Reihenfolge der Ausführung beachtet werden muss. Somit ist \begin{align} \label{FormelBeispielQuaternion} - \mathbf{q} &= \mathbf{q}_{31}\mathbf{q}_{23} = (0.71 + 0.71\mathbf{e}_{31})(0.71 + 0.71\mathbf{e}_{23}) &= 0.5 + 0.5\mathbf{e}_{31} + 0.5 \mathbf{e}_{23} + 0.5 \mathbf{e}_{12}\\ - \mathbf{q}^{-1} &= \mathbf{q}_{23}^{-1}\mathbf{q}_{31}^{-1} = (0.71 - 0.71\mathbf{e}_{23})(0.71 - 0.71\mathbf{e}_{31}) &= 0.5 - 0.5\mathbf{e}_{31} - 0.5 \mathbf{e}_{23} - 0.5 \mathbf{e}_{12} + \mathbf{q} &= \mathbf{q}_{31}\mathbf{q}_{23} = \textstyle{\frac{\sqrt{2}}{2}}(1 + \mathbf{e}_{31})\textstyle{\frac{\sqrt{2}}{2}}(1 + \mathbf{e}_{23}) &= \textstyle{\frac{1}{2}}(1 + \mathbf{e}_{31} + \mathbf{e}_{23} + \mathbf{e}_{12})\\ + \mathbf{q}^{-1} &= \mathbf{q}_{23}^{-1}\mathbf{q}_{31}^{-1} = \textstyle{\frac{\sqrt{2}}{2}} (1- \mathbf{e}_{23})\textstyle{\frac{\sqrt{2}}{2}}(1 -\mathbf{e}_{31}) &= \textstyle{\frac{1}{2}}(1 - \mathbf{e}_{31} - \mathbf{e}_{23} - \mathbf{e}_{12}). \end{align} Wenn wir nun den Quaternion $\mathbf{q}$ auf den Vektor $\mathbf{v}$ anwenden \begin{align} - \mathbf{v}'' = \mathbf{qvq}^{-1} &= (0.5 + 0.5\mathbf{e}_{31} + 0.5 \mathbf{e}_{23} + 0.5 \mathbf{e}_{12})(1\mathbf{e}_2)(0.5 - 0.5\mathbf{e}_{31} - 0.5 \mathbf{e}_{23} - 0.5 \mathbf{e}_{12})\\ - &= (0.5\mathbf{e}_2 + 0.5 \mathbf{e}_{123} - 0.5 \mathbf{e}_3 + 0.5 \mathbf{e}_1)(0.5 - 0.5\mathbf{e}_{31} - 0.5 \mathbf{e}_{23} - 0.5 \mathbf{e}_{12})\\ - &= (0.25 + 0.25 + 0.25 + 0.25)\mathbf{e}_1 + (0.25 + 0.25 - 0.25 - 0.25)\mathbf{e}_2 +\\ &(-0.25 + 0.25 - 0.25 + 0.25)\mathbf{e}_3 + (0.25 - 0.25 - 0.25 + 0.25)\mathbf{e}_{123}\\ + \mathbf{v}'' = \mathbf{qvq}^{-1} &= \textstyle{\frac{1}{2}}(1 + \mathbf{e}_{31} + \mathbf{e}_{23} + \mathbf{e}_{12})(1\mathbf{e}_2)\textstyle{\frac{1}{2}}(1 - \mathbf{e}_{31} - \mathbf{e}_{23} - \mathbf{e}_{12})\\ + &= \textstyle{\frac{1}{4}}(\mathbf{e}_2 + \mathbf{e}_{123} - \mathbf{e}_3 + \mathbf{e}_1)(1 - \mathbf{e}_{31} - \mathbf{e}_{23} - \mathbf{e}_{12})\\ + &= (\textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}})\mathbf{e}_1 + (\textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}} - \textstyle{\frac{1}{4}} - \textstyle{\frac{1}{4}})\mathbf{e}_2 +\\ &(-\textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}} - \textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}})\mathbf{e}_3 + (\textstyle{\frac{1}{4}} - \textstyle{\frac{1}{4}} - \textstyle{\frac{1}{4}} + \textstyle{\frac{1}{4}})\mathbf{e}_{123}\\ &= 1e_1 \end{align} Anders betrachtet könnte man von der Formel \eqref{FormelBeispielQuaternion} sehen, dass der Drehwinkel \begin{align} - \alpha = \arccos(w) = \arccos(0.5) = 60° + \alpha = \arccos(w) = \arccos(\textstyle{\frac{1}{2}}) = 60° \end{align} und die Ebene der kombinierten Bivektoren wie in Abbildung \ref{BildQuaternionBeispiel2} aussieht. Somit kann man sich ebenfalls Vorstellen, wie der parallele Anteil zur Ebene insgesamt um 120° rotiert wird während der senkrechte Anteil unverändert bleibt \end{beispiel} -\begin{figure} - \centering - \begin{tikzpicture} - % Koordinatensystem - \draw[thin,gray!40] (-3,-2) grid (3,3); - \draw[<->] (-3,0)--(3,0) node[right]{$a_1$}; - \draw[<->] (0,-2)--(0,3) node[above]{$a_2$}; - \draw[<->] (3,3)--(-2,-2) node[left]{$a_3$}; - - % q Quaternion - \draw[line width=0,fill=blue!40] (0,0)--(1.41,0)--(1.41,1.41)--(0,1.41) - node[xshift=0.375cm, yshift=-0.5cm, blue]{$x\boldsymbol{e_{12}}$}; - \draw[->] (1.35, 1.2) arc (0:310:0.15); - - \draw[line width=0,fill=blue!40] (0,0)--(-1,-1)--(-1,0.41)--(0,1.41) - node[xshift=-0.5cm, yshift=-1.5cm, blue]{$y\boldsymbol{e_{23}}$}; - \draw[->] (-0.65,-0.5) arc (0:310:0.15); - - \draw[line width=0,fill=blue!40] (0,0)--(-1,-1)--(0.41,-1)--(1.41,0) - node[xshift=-0.7cm, yshift=-0.2cm, blue]{$z\boldsymbol{e_{31}}$}; - \draw[->] (0.4,-0.8) arc (0:310:0.15); - - % Basisvektoren - \draw[line width=1.5pt,gray,-stealth](0,0)--(2,0) node[anchor=south west]{$\boldsymbol{e_1}$}; - \draw[line width=1.5pt,gray,-stealth](0,0)--(0,2) node[anchor=north west, yshift=0.2cm]{$\boldsymbol{e_2}$}; - \draw[line width=1.5pt,gray,-stealth](0,0)--(-1.41,-1.41) node[anchor=south, yshift=0.2cm]{$\boldsymbol{e_3}$}; - - % v Vektor - \draw[line width=2pt,black,-stealth](-0.05,0)--(-0.05,2) node[anchor=east]{$\boldsymbol{v}$}; - % v'' Vektor - \draw[line width=2pt,black,-stealth](0,0.05)--(2,0.05) node[anchor=north]{$\boldsymbol{v}''$}; - \end{tikzpicture} - \caption{Beispiel für Drehung um 90 Grad je um die $\mathbf{e}_1$- und $\mathbf{e}_2$-Achse.} - \label{BildQuaternionBeispiel} -\end{figure} \begin{figure} \centering @@ -201,7 +189,7 @@ Es ist wichtig bei Quaternionen für eine reine Drehstreckung mit $q$ und $q^{-1 \subsection{Interpolation} In der Computergrafik wird Interpolation verwendet, um eine flüssige Drehbewegung zu erreichen. Dabei wird die gewünschte Drehbewegungen des Objektes in kleinere aufgeteilt. Man kann dabei mit zwei verschiedenen Systemen arbeiten. \begin{itemize} - \item Mit den Eulerschen Winkeln, welche für die Meisten zwar intuitiver sind, aber dafür Nachteile haben, worauf ich in diesem Abschnitt eingehen werde. Dabei kann eine ganze Drehbewegung $\mathbf{v}'' = R\mathbf{v}$ durch die Drehmatrix $R$ dargestellt werden. + \item Mit den Eulerschen Winkeln, welche für die Meisten zwar intuitiver sind, aber dafür Nachteile haben, worauf ich in diesem Abschnitt eingehen werde. Dabei kann eine ganze Drehbewegung $\mathbf{v}'' = R\mathbf{v}$ durch die Drehmatrix $R$ \begin{align} \begin{split} &R = R_z(\gamma) R_y(\beta) R_x(\alpha)\\ @@ -217,11 +205,9 @@ In der Computergrafik wird Interpolation verwendet, um eine flüssige Drehbewegu \end{pmatrix} \end{split} \end{align} - Wichtig dabei zu sehen ist, dass die Drehbewegungen durch die einzelnen Matrizen nacheinander ausgeführt werden. Das bedeutet, wenn man die Reihenfolge vertauscht, bekommt man eine völlig andere Drehung. Man kann die Auswirkungen der Reihenfolge gut bei einem Gimbal (REF zu BILD) sehen. Die Matrix ganz links ist die, welche als letztes Angewendet wird. Somit bildet sie die Drehung des äusseren Rings, welche auch die zwei inneren Ringe und das Objekt mitdreht. Die Matrix ganz rechts hingegen bildet nur die Drehung des inneren Rings, welche nur das Objekt selber dreht. Man kann dabei erkennen, dass vorgehen dabei sehr intuitiv ist, aber es kompliziert sein kann eine gewünschte Drehbewegung auszuführen, da sich beim Drehen der äusseren Achse, sich auch die Inneren drehen. Das bedeutet, wenn man sich eine Drehbewegung um die anfängliche x Achse mit $R_x(\alpha_2)$ wünscht, und vorher eine beliebige Drehung $R = R_z(\gamma_1) R_y(\beta_1) R_x(\alpha_1)$ ausgeführt hat, bekommt man nicht das richtige Ergebnis, da die anfängliche x-Achse durch die Drehmatrizen $R_z(\gamma_1)$ und $R_y(\beta_1)$ zu einer neuen, lokalen x-Achse wurde. + dargestellt werden. Wichtig dabei zu sehen ist, dass die Drehbewegungen durch die einzelnen Matrizen nacheinander ausgeführt werden. Das bedeutet, wenn man die Reihenfolge vertauscht, bekommt man eine völlig andere Drehung. Man kann die Auswirkungen der Reihenfolge gut bei einem Gimbal (REF zu BILD) sehen. Die Matrix ganz links ist die, welche als letztes Angewendet wird. Somit bildet sie die Drehung des äusseren Rings, welche auch die zwei inneren Ringe und das Objekt mitdreht. Die Matrix ganz rechts hingegen bildet nur die Drehung des inneren Rings, welche nur das Objekt selber dreht. Man kann dabei erkennen, dass vorgehen dabei sehr intuitiv ist, aber es kompliziert sein kann eine gewünschte Drehbewegung auszuführen, da sich beim Drehen der äusseren Achse, sich auch die Inneren drehen. Das bedeutet, wenn man sich eine Drehbewegung um die anfängliche x Achse mit $R_x(\alpha_2)$ wünscht, und vorher eine beliebige Drehung $R = R_z(\gamma_1) R_y(\beta_1) R_x(\alpha_1)$ ausgeführt hat, bekommt man nicht das richtige Ergebnis, da die anfängliche x-Achse durch die Drehmatrizen $R_z(\gamma_1)$ und $R_y(\beta_1)$ zu einer neuen, lokalen x-Achse wurde. \item Andererseits mit den Quaternionen, welche die besondere Eigenschaft haben, dass eine Drehung immer um die globale Achsen ausgeführt wird, egal in welcher Rotationsposition sich das Objekt befindet. \end{itemize} Für Spielentwickler ist es darum meist sinnvoller Quaternionen für Drehbewegungen anzuwenden, als sich mit komplizierten Berechnungen mit Eulerschen Winkeln herumzuschlagen. \subsection{Gimbal-Lock} -Ein weiterer Nachteil der Eulerschen Winkel ist das Gimbal-Lock. Es entsteht dann, wenn der äussere Ring Deckungsgleich über denn Inneren gedreht wird. Dabei verliert das Gimbal eine Drehrichtung, da der äussere und Innere Ring nun die gleiche Drehrichtung besitzen. Dies kann beispielsweise Probleme bei Spielen bei der Berechnung der Interpolation führen. Man hat das bei älteren Spielen dann gesehen, wenn plötzlich Gliedmassen bei den Spielermodellen in unnatürlichen Richtungen gesprungen sind. -\subsection{Fazit} -andere Darstellungsweise. Besser für Verständnis => komplexe Zahlen erscheinen ähnlicher zu Quaternionen? Eine Sprache für alle Geometrische Probleme
\ No newline at end of file +Ein weiterer Nachteil der Eulerschen Winkel ist das Gimbal-Lock. Es entsteht dann, wenn der äussere Ring Deckungsgleich über denn Inneren gedreht wird. Dabei verliert das Gimbal eine Drehrichtung, da der äussere und Innere Ring nun die gleiche Drehrichtung besitzen. Dies kann beispielsweise Probleme bei Spielen bei der Berechnung der Interpolation führen. Man hat das bei älteren Spielen dann gesehen, wenn plötzlich Gliedmassen bei den Spielermodellen in unnatürlichen Richtungen gesprungen sind.
\ No newline at end of file diff --git a/buch/papers/clifford/11_Fazit.tex b/buch/papers/clifford/11_Fazit.tex new file mode 100644 index 0000000..7352399 --- /dev/null +++ b/buch/papers/clifford/11_Fazit.tex @@ -0,0 +1,9 @@ +% +% teil3.tex -- Beispiel-File für Teil 3 +% +% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil +% +\section{Fazit} +\rhead{Fazit} + +Die geometrische Algebra ist dafür ausgelegt geometrische Operationen, wie die Spiegelung oder Rotation, einfach zu beschreiben. Dadurch kann sie als gute alternative zu der linearen Algebra angewendet werden, um graphische Probleme zu lösen. Sie kann zudem zum Verständnis hinter der Rotierenden Eigenschaften der komplexen Zahlen und Quaternionen beitragen und die Zusammenhänge zwischen den komplexen Zahlen und den Quaternionen besser zeigen.
\ No newline at end of file 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 Binary files differnew file mode 100644 index 0000000..690cfdc --- /dev/null +++ b/buch/papers/clifford/3d/dq.jpg diff --git a/buch/papers/clifford/3d/dq.pdf b/buch/papers/clifford/3d/dq.pdf Binary files differnew file mode 100644 index 0000000..797a558 --- /dev/null +++ b/buch/papers/clifford/3d/dq.pdf 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 Binary files differnew file mode 100644 index 0000000..2347296 --- /dev/null +++ b/buch/papers/clifford/3d/drehung.jpg diff --git a/buch/papers/clifford/3d/drehung.pdf b/buch/papers/clifford/3d/drehung.pdf Binary files differnew file mode 100644 index 0000000..bc8036e --- /dev/null +++ b/buch/papers/clifford/3d/drehung.pdf 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 Binary files differnew file mode 100644 index 0000000..929ef90 --- /dev/null +++ b/buch/papers/clifford/3d/q23.jpg 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 Binary files differnew file mode 100644 index 0000000..c240b4f --- /dev/null +++ b/buch/papers/clifford/3d/q31.jpg 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 Binary files differnew file mode 100644 index 0000000..fd7dbfa --- /dev/null +++ b/buch/papers/clifford/3d/qq.pdf 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/6_PauliMatrizen.tex b/buch/papers/clifford/6_PauliMatrizen.tex index e41275a..4438aeb 100644 --- a/buch/papers/clifford/6_PauliMatrizen.tex +++ b/buch/papers/clifford/6_PauliMatrizen.tex @@ -91,7 +91,7 @@ bestätigt. Man kann bei den Definitionen \ref{def:defPauli} und \ref{def:defPau \begin{hilfssatz} Ein beliebiger Multivektor \begin{align} \label{MultiVektorAllg} - M = a_0\mathbf{e}_0 + a_1\mathbf{e}_1 + a_2\mathbf{e}_3 + a_{12}\mathbf{e}_{12} + a_{23}\mathbf{e}_{23} + a_{31}\mathbf{e}_{31} + a_{123}\mathbf{e}_{123}\\ + M = a_0\mathbf{e}_0 + a_1\mathbf{e}_1 + a_2\mathbf{e}_3 + a_{12}\mathbf{e}_{12} + a_{23}\mathbf{e}_{23} + a_{31}\mathbf{e}_{31} + a_{123}\mathbf{e}_{123} \end{align} erhält durch das einsetzten der Formel Matrizen \eqref{Pauli} und \eqref{Pauli2} die Form \begin{align} diff --git a/buch/papers/clifford/7_Reflektion.tex b/buch/papers/clifford/7_Reflektion.tex index bdfb4e8..549848c 100644 --- a/buch/papers/clifford/7_Reflektion.tex +++ b/buch/papers/clifford/7_Reflektion.tex @@ -6,15 +6,15 @@ \section{Spiegelung} \rhead{Spiegelung} -Die Spiegelung ist eine grundlegende, geometrische Operation, aus welcher man weitere, wie beispielsweise die später beschriebene Rotation, ableiten kann. Da die geometrische Algebra für geometrische Anwendungen ausgelegt ist, sollte die Spiegelung auch eine einfache, praktische Formulierung besitzen. +Die Spiegelung ist eine grundlegende, geometrische Operation, aus welcher man weitere Operationen, wie beispielsweise die später beschriebene Rotation, ableiten kann. Da die geometrische Algebra für geometrische Anwendungen ausgelegt ist, sollte die Spiegelung auch eine einfache, praktische Formulierung besitzen. \begin{figure} \centering \begin{tikzpicture} \draw[thin,gray!40] (-3,-1) grid (3,3); \draw[<->] (-3,0)--(3,0) node[right]{$a_1$}; \draw[<->] (0,-1)--(0,3) node[above]{$a_2$}; + \draw[blue, line width=1.0pt] (0,3)--(0,-1) node[anchor=south east]{$\sigma_u$}; \draw[line width=2pt,black,-stealth](0,0)--(2,2) node[anchor=south east]{$\boldsymbol{v}$}; - \draw[line width=1.5pt,blue,-stealth](0,0)--(0,2.5) node[anchor=south east]{$\boldsymbol{u}$}; \draw[line width=2pt,black,-stealth](0,0)--(-2,2) node[anchor=south east]{$\boldsymbol{v'}$}; \draw[line width=1.5pt,gray,-stealth](0,0)--(1,0) node[anchor=north]{$\boldsymbol{e_1}$}; \draw[line width=1.5pt,gray,-stealth](0,0)--(0,1) node[anchor=north east]{$\boldsymbol{e_2}$}; @@ -22,62 +22,74 @@ Die Spiegelung ist eine grundlegende, geometrische Operation, aus welcher man we 0.25cm]{$\boldsymbol{v_{\perp u}}$}; \draw[line width=1.5pt,red,-stealth](-2,2)--(0,2) node[xshift=-1cm, yshift= 0.25cm]{$\boldsymbol{v_{\perp u}}$}; - \draw[line width=1.5pt,purple,-stealth](0,1.5)--(1,1.5) node[xshift=-0.5cm, yshift=-0.25cm]{$\boldsymbol{\hat{n}}$}; + \draw[line width=1.5pt,blue,-stealth](0,0.05)--(1,0.05) node[xshift=-0.5cm, yshift=-0.25cm]{$\boldsymbol{\hat{u}}$}; \end{tikzpicture} - \caption{Spiegelung des Vektors \textbf{v} an Spiegelachse bzw. Vektor \textbf{u}} + \caption{Spiegelung des Vektors $\mathbf{v}$ an der Spiegelebene $\sigma_u$ mit dem Normalenvektor $\mathbf{\hat{u}}$} \label{BildSpiegelung} \end{figure} \subsection{Linearen Algebra} Aus der linearen Algebra ist bekannt, dass man eine Spiegelung an einer Ebene wie folgt beschreiben kann. \begin{definition} - Die Spiegelungsgleichung in der linearen Algebra mit dem Normalenvektor $\mathbf{\hat{n}}$ zur Spiegelebene ist + Die Abbildung der Spiegelung in der linearen Algebra mit dem Normalenvektor $\mathbf{\hat{u}}$ zur Spiegelebene ist \begin{equation} \label{RefLinAlg} - \mathbf{v^{'}} = \mathbf{v} - 2 \cdot \mathbf{v_{\parallel \hat{n}}} = \mathbf{v} - 2 \cdot \mathbf{v_{\perp u}}. + \mathbf{v} = \mathbf{v_{\perp u}} + \mathbf{v_{\parallel u}} \enspace\mapsto\enspace \mathbf{v'} = \mathbf{v_{\perp u}} - \mathbf{v_{\parallel u}} = \mathbf{v} - 2 \cdot \mathbf{v_{\parallel u}}. \end{equation} - Per Definition sind $\mathbf{v_{\parallel \hat{n}}} = \mathbf{v_{\perp u}}$. In der geometrischen Algebra verwenden wir aber in den Formeln Vektoren, welche Spiegelachsen, nicht Spiegelebenen, repräsentieren. \end{definition} -Es scheint für diese Formel aber umständlich zu sein, weitere Spiegelungen mit weiteren Spiegelebenen anzufügen. Man kann diese Abbildung aber auch als Matrix schreiben. Sei $\mathbf{\hat{n}}$ ein Normalenvektor auf die Spiegelungs-Achse bzw. -Ebene, also $\mathbf{\hat{n}}\perp \mathbf{u}$, und sei ausserdem normiert $|\mathbf{\hat{n}}| = 1$, dann kann man die Spiegelung durch die Matrix +Es scheint für diese Formel \eqref{RefLinAlg} aber umständlich zu sein, weitere Spiegelungen mit weiteren Spiegelebenen anzufügen. Weil man $\mathbf{v_{\parallel u}}$ auch als Skalarprodukt $\mathbf{v_{\parallel u}} = \mathbf{\hat{u}} \cdot \mathbf{v}$ schreiben kann, ist es leicht diese Abbildung auch als Matrix darzustellen. Sei $\mathbf{\hat{u}}$ ein Normalenvektor auf die Spiegelungsebene, also $\mathbf{\hat{u}}\perp \sigma_u$, und sei ausserdem normiert $|\mathbf{\hat{u}}| = 1$, dann kann man die Spiegelung durch die Matrix \begin{align} - S = E - 2\dfrac{1}{|\mathbf{n}|^2}\mathbf{nn}^t + S = E - 2\mathbf{\hat{u}\hat{u}}^t \end{align} beschrieben werden. In der zweiten und dritten Dimension ergibt die Berechnung \begin{align} \label{Spiegelmatrizen} S_2 = \begin{pmatrix} - 1-2n_1^2 & -2n_1n_2 \\ - -2n_1n_2 & 1-2n_2^2 - \end{pmatrix} \quad + 1-2u_1^2 & -2u_1u_2 \\ + -2u_1u_2 & 1-2u_2^2 + \end{pmatrix}\enspace\text{und}\enspace S_3 = \begin{pmatrix} - 1-2n_1^2 & -2n_1n_2 & -2n_1n_3\\ - -2n_1n_2 & 1-2n_2^2 & -2n_2n_3\\ - -2n_1n_3 & -2n_2n_3 & 1-2n_3^2\\ + 1-2u_1^2 & -2u_1u_2 & -2u_1u_3\\ + -2u_1u_2 & 1-2u_2^2 & -2u_2u_3\\ + -2u_1u_3 & -2u_2u_3 & 1-2u_3^2\\ \end{pmatrix}. \end{align} -Diese Spiegelmatrizen gehören der orthogonalen Matrizengruppe $S\in \text{O}(n)$ an. Die Matrizengruppe $\text{O}(n)$ haben die Eigenschaft $S^t S = E$, was bedeutet, dass die Länge und Winkel bei der Abbildung beibehalten bleiben. Zusätzlich sind die Spiegelmatrizen symmetrisch, es gilt $S^t = S$. Somit liefert zweimal dieselbe Spiegelung wieder die identische Abbildung, wie man aus +Diese Spiegelmatrizen gehören der orthogonalen Matrizengruppe $S_n\in \text{O}(n)$ an. Die Matrizengruppe $\text{O}(n)$ haben die Eigenschaft $S_n^t S_n = E$, was bedeutet, dass die Länge und Winkel bei der Abbildung beibehalten bleiben. Zusätzlich sind die Spiegelmatrizen symmetrisch, es gilt $S_n^t = S_n$. Somit liefert zweimal dieselbe Spiegelung wieder die identische Abbildung, wie man aus \begin{align} - S^t S = S^2 = E + S_n^t S_n = S_n^2 = E \end{align} schliessen kann. \subsection{Geometrische Algebra} -Um die folgenden Formeln zu verstehen, definieren wir zuerst die Inverse eines Vektors, welche in dieser Form nicht in der linearen Algebra nicht existiert. +Wir definieren zuerst die Inverse eines Vektors, welche in dieser Form nicht in der linearen Algebra nicht existiert. \begin{definition} Die Inverse eines Vektors wird definiert als - \begin{align} - \mathbf{u}^{-1} = \dfrac{\mathbf{u}}{|\mathbf{u}|^2} \Rightarrow \mathbf{uu}^{-1} = \dfrac{\mathbf{u}^2}{|\mathbf{u}|^2} = 1. + \begin{align} \label{InverseGA} + \mathbf{u}^{-1} = \dfrac{\mathbf{u}}{|\mathbf{u}|^2}. \end{align} - Wie schon aus anderen algebraischen Strukturen bekannt, ergibt ein Element, hier $\mathbf{u}$, multipliziert mit dessen Inversen, hier $\mathbf{u}^{-1}$, das neutrale Element der Struktur, hier 1. \end{definition} +Diese Definition ist sinnvoll, da wegen $\mathbf{u}^2 = |\mathbf{u}|^2$ folgt +\begin{align} + \mathbf{uu}^{-1} = \mathbf{u} \frac{\mathbf{u}}{|\mathbf{u}|^2} = \frac{\mathbf{u}^2}{|\mathbf{u}|^2} = \frac{|\mathbf{u}|^2}{|\mathbf{u}|^2} = 1. +\end{align} +Der Vektor $\mathbf{u}^{-1}$ in \eqref{InverseGA} ist also tatsächlich das inverse Element im Sinne des Produktes in der geometrischen Algebra. Die geometrische Algebra leitet aus der obigen Formel \eqref{RefLinAlg} für eine Spiegelung eine einfache und intuitive Form her, welche auch für weitere Operationen erweitert werden kann. \begin{definition} - Die Spiegelungsgleichung in der geometrischen Algebra mit der Spiegelachse $\mathbf{u}$ ist definiert als + Die Abbildung der Spiegelung in der geometrischen Algebra mit dem senkrechten Vektor $\mathbf{u}$ zur Spiegelungsebene $\sigma_u$ ist \begin{align}\label{RefGA} - \mathbf{v}' = \mathbf{uvu}^{-1} + \mathbf{v} \enspace\mapsto\enspace \mathbf{v}' = -\mathbf{uvu}^{-1} \end{align} \end{definition} +Diese Abbildung muss stimmen, weil man durch die Schlussfolgerungen \eqref{uperpv} und \eqref{uparallelv} die Zusammenhänge +\begin{align} + \mathbf{uv_{\perp u}} = -\mathbf{v_{\perp u}u} \enspace\text{und}\enspace \mathbf{uv_{\parallel u}}=\mathbf{v_{\parallel u}u} +\end{align} +der geometrischen Produkte findet und somit die Abbildung aus der geometrischen Algebra \eqref{RefGA} wegen +\begin{align} + \mathbf{v}' = -\mathbf{uvu}^{-1} = -\mathbf{uv_{\perp u}u}^{-1} - \mathbf{uv_{\parallel u}u}^{-1} = -(-\mathbf{v_{\perp u}}\underbrace{\mathbf{u})\mathbf{u}^{-1}}_{1} -(\mathbf{v_{\parallel u}}\underbrace{\mathbf{u})\mathbf{u}^{-1}}_{1} = \mathbf{v_{\perp u}} - \mathbf{v_{\parallel u}} +\end{align} +gleichbedeutend zu der Definition \eqref{RefLinAlg} der Spiegelung ist. -verwendet man für $\mathbf{u}$ nur einen Einheitsvektor $\mathbf{\hat{u}}$, welcher die Länge 1 besitzt, wird die Gleichung zu +Verwendet man für $\mathbf{u}$ nur einen Einheitsvektor $\mathbf{\hat{u}}$, welcher die Länge 1 besitzt, wird die Gleichung \eqref{RefGA} zu \begin{align} - \mathbf{v'} = \mathbf{\hat{u}v\hat{u}} + \mathbf{v'} = -\mathbf{\hat{u}v\hat{u}} \end{align} vereinfacht. Im Gegensatz zu den Abbildungen in der linearen Algebra, welche in jeder anderen Dimension, durch andere Matrizen \eqref{Spiegelmatrizen} beschrieben werden müssen, ist es in der geometrischen Algebra immer der gleiche Vorgehensweise. Zudem ist diese kompakte Schreibweise in der linearen Algebra nicht möglich, da bis auf das Vektorprodukt in der dritten Dimension keine Multiplikation von Vektoren definiert ist.
\ No newline at end of file diff --git a/buch/papers/clifford/7_Spiegelung.tex b/buch/papers/clifford/7_Spiegelung.tex new file mode 100644 index 0000000..549848c --- /dev/null +++ b/buch/papers/clifford/7_Spiegelung.tex @@ -0,0 +1,95 @@ +% +% teil1.tex -- Beispiel-File für das Paper +% +% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil +% +\section{Spiegelung} +\rhead{Spiegelung} + +Die Spiegelung ist eine grundlegende, geometrische Operation, aus welcher man weitere Operationen, wie beispielsweise die später beschriebene Rotation, ableiten kann. Da die geometrische Algebra für geometrische Anwendungen ausgelegt ist, sollte die Spiegelung auch eine einfache, praktische Formulierung besitzen. +\begin{figure} + \centering + \begin{tikzpicture} + \draw[thin,gray!40] (-3,-1) grid (3,3); + \draw[<->] (-3,0)--(3,0) node[right]{$a_1$}; + \draw[<->] (0,-1)--(0,3) node[above]{$a_2$}; + \draw[blue, line width=1.0pt] (0,3)--(0,-1) node[anchor=south east]{$\sigma_u$}; + \draw[line width=2pt,black,-stealth](0,0)--(2,2) node[anchor=south east]{$\boldsymbol{v}$}; + \draw[line width=2pt,black,-stealth](0,0)--(-2,2) node[anchor=south east]{$\boldsymbol{v'}$}; + \draw[line width=1.5pt,gray,-stealth](0,0)--(1,0) node[anchor=north]{$\boldsymbol{e_1}$}; + \draw[line width=1.5pt,gray,-stealth](0,0)--(0,1) node[anchor=north east]{$\boldsymbol{e_2}$}; + \draw[line width=1.5pt,red,-stealth](0,2)--(2,2) node[xshift=-1cm, yshift= + 0.25cm]{$\boldsymbol{v_{\perp u}}$}; + \draw[line width=1.5pt,red,-stealth](-2,2)--(0,2) node[xshift=-1cm, yshift= + 0.25cm]{$\boldsymbol{v_{\perp u}}$}; + \draw[line width=1.5pt,blue,-stealth](0,0.05)--(1,0.05) node[xshift=-0.5cm, yshift=-0.25cm]{$\boldsymbol{\hat{u}}$}; + \end{tikzpicture} + \caption{Spiegelung des Vektors $\mathbf{v}$ an der Spiegelebene $\sigma_u$ mit dem Normalenvektor $\mathbf{\hat{u}}$} + \label{BildSpiegelung} +\end{figure} + +\subsection{Linearen Algebra} +Aus der linearen Algebra ist bekannt, dass man eine Spiegelung an einer Ebene wie folgt beschreiben kann. +\begin{definition} + Die Abbildung der Spiegelung in der linearen Algebra mit dem Normalenvektor $\mathbf{\hat{u}}$ zur Spiegelebene ist + \begin{equation} \label{RefLinAlg} + \mathbf{v} = \mathbf{v_{\perp u}} + \mathbf{v_{\parallel u}} \enspace\mapsto\enspace \mathbf{v'} = \mathbf{v_{\perp u}} - \mathbf{v_{\parallel u}} = \mathbf{v} - 2 \cdot \mathbf{v_{\parallel u}}. + \end{equation} +\end{definition} +Es scheint für diese Formel \eqref{RefLinAlg} aber umständlich zu sein, weitere Spiegelungen mit weiteren Spiegelebenen anzufügen. Weil man $\mathbf{v_{\parallel u}}$ auch als Skalarprodukt $\mathbf{v_{\parallel u}} = \mathbf{\hat{u}} \cdot \mathbf{v}$ schreiben kann, ist es leicht diese Abbildung auch als Matrix darzustellen. Sei $\mathbf{\hat{u}}$ ein Normalenvektor auf die Spiegelungsebene, also $\mathbf{\hat{u}}\perp \sigma_u$, und sei ausserdem normiert $|\mathbf{\hat{u}}| = 1$, dann kann man die Spiegelung durch die Matrix +\begin{align} + S = E - 2\mathbf{\hat{u}\hat{u}}^t +\end{align} +beschrieben werden. In der zweiten und dritten Dimension ergibt die Berechnung +\begin{align} \label{Spiegelmatrizen} + S_2 = \begin{pmatrix} + 1-2u_1^2 & -2u_1u_2 \\ + -2u_1u_2 & 1-2u_2^2 + \end{pmatrix}\enspace\text{und}\enspace + S_3 = \begin{pmatrix} + 1-2u_1^2 & -2u_1u_2 & -2u_1u_3\\ + -2u_1u_2 & 1-2u_2^2 & -2u_2u_3\\ + -2u_1u_3 & -2u_2u_3 & 1-2u_3^2\\ + \end{pmatrix}. +\end{align} +Diese Spiegelmatrizen gehören der orthogonalen Matrizengruppe $S_n\in \text{O}(n)$ an. Die Matrizengruppe $\text{O}(n)$ haben die Eigenschaft $S_n^t S_n = E$, was bedeutet, dass die Länge und Winkel bei der Abbildung beibehalten bleiben. Zusätzlich sind die Spiegelmatrizen symmetrisch, es gilt $S_n^t = S_n$. Somit liefert zweimal dieselbe Spiegelung wieder die identische Abbildung, wie man aus +\begin{align} + S_n^t S_n = S_n^2 = E +\end{align} +schliessen kann. + +\subsection{Geometrische Algebra} +Wir definieren zuerst die Inverse eines Vektors, welche in dieser Form nicht in der linearen Algebra nicht existiert. +\begin{definition} + Die Inverse eines Vektors wird definiert als + \begin{align} \label{InverseGA} + \mathbf{u}^{-1} = \dfrac{\mathbf{u}}{|\mathbf{u}|^2}. + \end{align} +\end{definition} +Diese Definition ist sinnvoll, da wegen $\mathbf{u}^2 = |\mathbf{u}|^2$ folgt +\begin{align} + \mathbf{uu}^{-1} = \mathbf{u} \frac{\mathbf{u}}{|\mathbf{u}|^2} = \frac{\mathbf{u}^2}{|\mathbf{u}|^2} = \frac{|\mathbf{u}|^2}{|\mathbf{u}|^2} = 1. +\end{align} +Der Vektor $\mathbf{u}^{-1}$ in \eqref{InverseGA} ist also tatsächlich das inverse Element im Sinne des Produktes in der geometrischen Algebra. +Die geometrische Algebra leitet aus der obigen Formel \eqref{RefLinAlg} für eine Spiegelung eine einfache und intuitive Form her, welche auch für weitere Operationen erweitert werden kann. +\begin{definition} + Die Abbildung der Spiegelung in der geometrischen Algebra mit dem senkrechten Vektor $\mathbf{u}$ zur Spiegelungsebene $\sigma_u$ ist + \begin{align}\label{RefGA} + \mathbf{v} \enspace\mapsto\enspace \mathbf{v}' = -\mathbf{uvu}^{-1} + \end{align} +\end{definition} +Diese Abbildung muss stimmen, weil man durch die Schlussfolgerungen \eqref{uperpv} und \eqref{uparallelv} die Zusammenhänge +\begin{align} + \mathbf{uv_{\perp u}} = -\mathbf{v_{\perp u}u} \enspace\text{und}\enspace \mathbf{uv_{\parallel u}}=\mathbf{v_{\parallel u}u} +\end{align} +der geometrischen Produkte findet und somit die Abbildung aus der geometrischen Algebra \eqref{RefGA} wegen +\begin{align} + \mathbf{v}' = -\mathbf{uvu}^{-1} = -\mathbf{uv_{\perp u}u}^{-1} - \mathbf{uv_{\parallel u}u}^{-1} = -(-\mathbf{v_{\perp u}}\underbrace{\mathbf{u})\mathbf{u}^{-1}}_{1} -(\mathbf{v_{\parallel u}}\underbrace{\mathbf{u})\mathbf{u}^{-1}}_{1} = \mathbf{v_{\perp u}} - \mathbf{v_{\parallel u}} +\end{align} +gleichbedeutend zu der Definition \eqref{RefLinAlg} der Spiegelung ist. + +Verwendet man für $\mathbf{u}$ nur einen Einheitsvektor $\mathbf{\hat{u}}$, welcher die Länge 1 besitzt, wird die Gleichung \eqref{RefGA} zu +\begin{align} + \mathbf{v'} = -\mathbf{\hat{u}v\hat{u}} +\end{align} +vereinfacht. Im Gegensatz zu den Abbildungen in der linearen Algebra, welche in jeder anderen Dimension, durch andere Matrizen \eqref{Spiegelmatrizen} beschrieben werden müssen, ist es in der geometrischen Algebra immer der gleiche Vorgehensweise. Zudem ist diese kompakte Schreibweise in der linearen Algebra nicht möglich, da bis auf das Vektorprodukt in der dritten Dimension keine Multiplikation von Vektoren definiert ist.
\ No newline at end of file diff --git a/buch/papers/clifford/8_Rotation.tex b/buch/papers/clifford/8_Rotation.tex index 6a3251a..1d5e889 100644 --- a/buch/papers/clifford/8_Rotation.tex +++ b/buch/papers/clifford/8_Rotation.tex @@ -6,7 +6,7 @@ \section{Rotation} \rhead{Rotation} -Eine Rotation kann man aus zwei aufeinanderfolgenden Spiegelungen bilden. Das wird für einige zuerst eine verwirrende Aussage sein, da man aus den vorherig gezeigten Formeln annehmen könnte, dass die Spiegelung schon für eine Drehung ausreicht. Obwohl sich die Längen, Winkel und Volumen sich bei einer Spiegelung, wie bei einer Rotation, nicht ändert, sind sie doch verschieden, da die Orientierung bei der Spiegelung invertiert wird. Stellt man sich beispielsweise ein Objekt im Dreidimensionalen vor und spiegelt dieses an einer Fläche, dann ist es unmöglich nur durch eine Rotation (egal an welchem Punkt) das ursprüngliche Objekt deckungsgleich auf das Gespiegelte zu drehen. Hingegen ist es wiederum möglich ein zweifach gespiegeltes Objekt durch eine Drehung zu erreichen. Das liegt daran, da die Orientierung zweimal invertiert wurde. +Eine Rotation kann man aus zwei aufeinanderfolgenden Spiegelungen bilden. Das kann vielleicht zuerst eine verwirrende Aussage sein, da man aus den vorherig gezeigten Formeln annehmen könnte, dass die Spiegelung schon für eine Drehung ausreicht. Obwohl sich die Längen, Winkel und Volumen sich bei einer Spiegelung, wie bei einer Rotation, nicht ändert, sind sie doch verschieden, da die Orientierung bei der Spiegelung invertiert wird. Stellt man sich beispielsweise ein Objekt im Dreidimensionalen vor und spiegelt dieses an einer Fläche, dann ist es unmöglich nur durch eine Rotation (egal an welchem Punkt) das ursprüngliche Objekt deckungsgleich auf das Gespiegelte zu drehen. Hingegen ist es wiederum möglich ein zweifach gespiegeltes Objekt durch eine Drehung zu erreichen. Das liegt daran, da die Orientierung zweimal invertiert wurde. \\(Hier wird noch ein Bild für das Verständnis eingefügt) \begin{figure} @@ -15,19 +15,28 @@ Eine Rotation kann man aus zwei aufeinanderfolgenden Spiegelungen bilden. Das wi \draw[thin,gray!40] (-3,-1) grid (3,3); \draw[<->] (-3,0)--(3,0) node[right]{$a_1$}; \draw[<->] (0,-1)--(0,3) node[above]{$a_2$}; + \draw[line width=1.0pt,green,-stealth](2,2)--(-2,2) node[anchor=south west]{$\boldsymbol{-2v_{\parallel u}}$}; + \draw[line width=1.0pt,green,-stealth](-2,2)--(-2.828,0) node[anchor=north west]{$\boldsymbol{-2v'_{\parallel w}}$}; + \draw[blue, line width=1.0pt] (0,3)--(0,-1) node[anchor=south east]{$\sigma_u$}; + \draw[red, line width=1.0pt] (-3,1.24)--(2.21,-1) node[anchor=south]{$\sigma_w$}; \draw[line width=2pt,black,-stealth](0,0)--(2,2) node[anchor=south east]{$\boldsymbol{v}$}; - \draw[line width=1.5pt,blue,-stealth](0,0)--(0,2.5) node[anchor=south east]{$\boldsymbol{u}$}; + \draw[line width=1.5pt,blue,-stealth](0,0)--(2.5, 0) node[anchor=south east]{$\boldsymbol{u}$}; \draw[line width=2pt,black,-stealth](0,0)--(-2,2) node[anchor=south east]{$\boldsymbol{v'}$}; - \draw[line width=1.5pt,red,-stealth](0,0)--(-2.31, 0.957) node[anchor=south east]{$\boldsymbol{w}$}; + \draw[line width=1.5pt,red,-stealth](0,0)--(0.957, 2.31) node[anchor=south east]{$\boldsymbol{w}$}; \draw[line width=2pt,black,-stealth](0,0)--(-2.828,0) node[anchor=south east]{$\boldsymbol{v''}$}; \draw[line width=1.5pt,gray,-stealth](0,0)--(1,0) node[anchor=north]{$\boldsymbol{e_1}$}; - \draw[line width=1.5pt,gray,-stealth](0,0)--(0,1) node[anchor=north west]{$\boldsymbol{e_2}$}; + \draw[line width=1.5pt,gray,-stealth](0,0)--(0,1) node[anchor=north east]{$\boldsymbol{e_2}$}; \coordinate (A) at (0,0); - \coordinate (B) at (0,2.5); - \coordinate (C) at (-2.31, 0.957); - \tikzset{anglestyle/.style={angle eccentricity=1.25, draw, thick, angle radius=1.25cm}} + \coordinate (B) at (2.5,0); + \coordinate (C) at (0.957, 2.31); + \tikzset{anglestyle/.style={angle eccentricity=1.25, purple, draw, thick, angle radius=1cm}} \draw pic ["$\theta$", anglestyle] {angle = B--A--C}; + \coordinate (D) at (0,0); + \coordinate (E) at (1,1); + \coordinate (F) at (-1, 0); + \tikzset{anglestyle/.style={angle eccentricity=1.25, purple, draw, thick, angle radius=1.25cm}} + \draw pic ["$2\theta$", anglestyle] {angle = E--D--F}; \end{tikzpicture} \caption{Rotation des Vektors $\textbf{v}$ um $2\theta$} \label{BildRotation} @@ -49,76 +58,84 @@ Diese Drehmatrizen gehören der speziellen orthogonalen Matrizengruppe $D\in \te \subsection{Geometrische Algebra} Da wir jetzt aus der Geometrie wissen, dass eine Rotation durch zwei Spiegelungen gebildet werden kann, können wir die Rotation mit der Formel \eqref{RefGA} einfach herleiten. \begin{satz} - Eine Rotation + Durch zwei nacheinander auf einen Vektor $\mathbf{v}$ angewendete Spiegelungen lässt sich eine Rotation \begin{align} \label{rotGA} - \mathbf{v}'' = \mathbf{wv}'\mathbf{w}^{-1} = \mathbf{w}(\mathbf{uvu}^{-1})\mathbf{w}^{-1} = (\mathbf{wu})\mathbf{v}(\mathbf{u}^{-1}\mathbf{w}^{-1}) + \mathbf{v}'' = -\mathbf{wv}'\mathbf{w}^{-1} = -\mathbf{w}(-\mathbf{uvu}^{-1})\mathbf{w}^{-1} = (\mathbf{wu})\mathbf{v}(\mathbf{u}^{-1}\mathbf{w}^{-1}) \end{align} - lässt sich durch zwei nacheinander auf einen Vektor $\mathbf{v}$ angewendete Spiegelungen beschreiben. + beschreiben. \end{satz} Die Vektoren $\mathbf{w}$ und $\mathbf{u}$ bilden hier wiederum die Spiegelachsen. Diese Formel versuchen wir jetzt noch durch Umstrukturierung zu verbessern. \subsubsection{Exponentialform} -Dazu leiten wir zuerst die Exponentialform eines Vektors her. Es wird dabei zur Vereinfachung davon ausgegangen, dass alle Vektoren $\mathbf{w}, \mathbf{u}, \mathbf{v}$ in der $\mathbf{e}_{12}$ Ebene liegen. Weitere Drehungen können in höheren Dimensionen durch Linearkombinationen von Drehungen in den $\mathbf{e}_{ij}, i\not=j$ Ebenen erreicht werden. Für die Herleitung erweitern wir nun als erstes die Polarform +Dazu leiten wir zuerst die Exponentialform eines Vektors her. Es wird dabei zur Vereinfachung davon ausgegangen, dass alle Vektoren $\mathbf{w}, \mathbf{u}, \mathbf{v}$ in der $\mathbf{e}_{1}$-$\mathbf{e}_{2}$-Ebene liegen. Weitere Drehungen können in höheren Dimensionen durch Linearkombinationen von Drehungen in den $\mathbf{e}_{i}$-$\mathbf{e}_{j}$-Ebenen $(i\not=j)$ erreicht werden. Für die Herleitung ersetzen wir als erstes in der Polarform \begin{align} \mathbf{w} = |\mathbf{w}| \left(\cos(\theta_w) \mathbf{e}_1 + \sin(\theta_w) \mathbf{e}_2\right) \end{align} -eines Vektors mit $\mathbf{e}_1^2 = 1$ beim Sinus +eines Vektors einen Faktor 1 durch $1=\mathbf{e}_1^2$ und erhalten beim Sinus \begin{align}\label{e1ausklammern} - \mathbf{w} &= |\mathbf{w}| \left(\cos(\theta_w) \mathbf{e}_1 + \sin(\theta_w) \mathbf{e}_1\mathbf{e}_1\mathbf{e}_2\right), + \mathbf{w} &= |\mathbf{w}| \left(\cos(\theta_w) \mathbf{e}_1 + \sin(\theta_w) \mathbf{e}_1\mathbf{e}_1\mathbf{e}_2\right). \end{align} -um dann $\mathbf{e}_1$ +In einem zweiten Schritt klammern wir $\mathbf{e}_1$ aus, dies ergibt \begin{align} - \mathbf{w} = |\mathbf{w}|\mathbf{e}_1\left(\cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12}\right) \label{ExponentialGA} + \mathbf{w} = |\mathbf{w}|\mathbf{e}_1\left(\cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12}\right). \label{ExponentialGA} \end{align} -ausklammern zu können. Die Ähnlichkeit des Klammerausdrucks zu der Eulerschen Formel bei den Komplexen Zahlen ist nun schon gut erkennbar. Versuchen wir nun mithilfe der Reihenentwicklungen +Die Ähnlichkeit des Klammerausdrucks in der Formel \eqref{ExponentialGA} zu der Eulerschen Formel bei den komplexen Zahlen ist nun schon gut erkennbar. Versuchen wir nun mithilfe der Reihenentwicklungen \begin{align} \sin(\theta_w)\mathbf{e}_{12}&=\sum _{n=0}^{\infty }(-1)^{n}{\frac {\theta_w^{2n+1}}{(2n+1)!}}\mathbf{e}_{12} =\theta_w\mathbf{e}_{12}-{\frac {\theta_w^{3}}{3!}}\mathbf{e}_{12}+{\frac {\theta_w^{5}}{5!}}\mathbf{e}_{12}-\cdots \\ \cos(\theta_w)&=\sum _{n=0}^{\infty }(-1)^{n}{\frac {\theta_w^{2n}}{(2n)!}} =1-{\frac {\theta_w^{2}}{2!}}+{\frac {\theta_w^{4}}{4!}}-\cdots \end{align} -den Zusammenhang auch hier herzustellen. Verwenden wir jetzt noch die Eigenschaft, dass $\mathbf{e}_{12}^2=-1, \enspace\mathbf{e}_{12}^3=-\mathbf{e}_{12}, \dots$, bei dem Klammerausdruck in Formel \eqref{ExponentialGA} +diesen Zusammenhang auch hier herzustellen. Setzt man diese beiden Reihenentwicklungen in \eqref{ExponentialGA} ein, erhält man \begin{align} - \cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12} &= 1+\theta_w\mathbf{e}_{12}-{\frac {\theta_w^{2}}{2!}}-{\frac {\theta_w^{3}}{3!}}\mathbf{e}_{12}+{\frac {\theta_w^{4}}{4!}}+{\frac {\theta_w^{5}}{5!}}\mathbf{e}_{12}-\cdots\\ - &= 1 \mathbf{e}_{12}^0+\theta_w\mathbf{e}_{12}^1+{\frac {\theta_w^{2}}{2!}}\mathbf{e}_{12}^2+{\frac {\theta_w^{3}}{3!}}\mathbf{e}_{12}^3+{\frac {\theta_w^{4}}{4!}}\mathbf{e}_{12}^4+{\frac {\theta_w^{5}}{5!}}\mathbf{e}_{12}^5+\cdots + \cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12} &= 1+\theta_w\mathbf{e}_{12}-{\frac {\theta_w^{2}}{2!}}-{\frac {\theta_w^{3}}{3!}}\mathbf{e}_{12}+{\frac {\theta_w^{4}}{4!}}+{\frac {\theta_w^{5}}{5!}}\mathbf{e}_{12}-\cdots +\end{align} +Dies sieht noch nicht wie eine Exponentialreihe aus, da $\mathbf{e}_{12}$ nur in jedem zweiten Term auftritt. Da aber $\mathbf{e}_{12}=-1$ gibt, erhält man für +\begin{align} + e^{\theta_w\mathbf{e}_{12}} = 1 \mathbf{e}_{12}^0+\theta_w\mathbf{e}_{12}^1+{\frac {\theta_w^{2}}{2!}}\mathbf{e}_{12}^2+{\frac {\theta_w^{3}}{3!}}\mathbf{e}_{12}^3+{\frac {\theta_w^{4}}{4!}}\mathbf{e}_{12}^4+{\frac {\theta_w^{5}}{5!}}\mathbf{e}_{12}^5+\cdots \label{ExponentialGA2} \end{align} -dann sieht man die Übereinstimmung mit der Reihenentwicklung der Exponentialfunktion +Man sieht, dass die beiden Reihen übereinstimmen. Es folgt somit +\begin{align}\label{EulerGA} + e^{\theta_w \mathbf{e}_{12}} = \cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12}, +\end{align} +es gibt eine Euler-Formel mit $\mathbf{e}_{12}$ anstelle der imaginären Einheit $j$. + +Wenn man jetzt den Vektor \eqref{ExponentialGA} durch die eulersche Schreibweise \begin{align} - &e^{\theta_w\mathbf{e}_{12}}=\sum _{n=0}^{\infty }{\frac {(\theta_w\mathbf{e}_{12})^{n}}{n!}}={\frac {(\theta_w\mathbf{e}_{12})^{0}}{0!}}+{\frac {(\theta_w\mathbf{e}_{12})^{1}}{1!}}+{\frac {(\theta_w\mathbf{e}_{12})^{2}}{2!}}+{\frac {(\theta_w\mathbf{e}_{12})^{3}}{3!}}+\cdots\\ - &\Rightarrow \mathbf{w} = |w|\mathbf{e}_1 e^{\theta_w \mathbf{e}_{12}} = |w|\mathbf{e}_1\left(\cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_{12}\right). + \mathbf{w} = |\mathbf{w}|\mathbf{e}_1e^{\theta_w\mathbf{e}_{12}} \end{align} -Man kann die Exponentialform des Vektors ähnlich wie die der komplexen Zahlen interpretieren. Der Einheitsvektor $\mathbf{e}_1$ wird um die Länge $|\mathbf{w}|$ gestreckt und um $\theta_w$ gedreht. -Bei den komplexen Zahlen würden man vom Punkt 1 anstatt $\mathbf{e}_1$ ausgehen. +ersetzt, kann die Exponentialform des Vektors ähnlich wie die der komplexen Zahlen interpretieren. Der Einheitsvektor $\mathbf{e}_1$ wird um die Länge $|\mathbf{w}|$ gestreckt und um $\theta_w$ gedreht. \subsubsection{Vektormultiplikation} -Nun werden wir das Produkt von zwei Vektoren $\mathbf{wu}$ -\begin{align} +Nun werden wir das Vektorprodukt +\begin{align} \label{VektorproduktformelGA} \mathbf{wu} = |\mathbf{w}|\mathbf{e}_1 e^{\theta_w \mathbf{e}_{12}}|\mathbf{u}|\mathbf{e}_1 e^{\theta_u \mathbf{e}_{12}} \end{align} -so umformen, dass wir eine bessere Darstellung erhalten. Wir tauschen dafür zuerst beim Vektor $\mathbf{w}$ die Reihenfolge von -$\mathbf{e}_1$ mit dem Exponentialterm $e^{\theta_w \mathbf{e}_{12}}$, indem wir bei der Gleichung \eqref{e1ausklammern}, anstatt mit $\mathbf{e}_1\mathbf{e}_1\mathbf{e}_2$ mit $\mathbf{e}_2\mathbf{e}_1\mathbf{e}_1$ erweitern +so umformen, dass wir die Drehung nur durch Exponentialterme beschreiben können. Wir tauschen dafür zuerst beim Vektor $\mathbf{w}$ die Reihenfolge von +$\mathbf{e}_1$ mit dem Exponentialterm $e^{\theta_w \mathbf{e}_{12}}$, indem wir bei der Gleichung \eqref{e1ausklammern} $1=\mathbf{e}_1^2$ an einer anderen Position \begin{align} - \mathbf{w} &= |\mathbf{w}|\left(\cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_2\mathbf{e}_1\right)\mathbf{e}_1\\ - &= |\mathbf{w}|e^{\theta_w \mathbf{e}_{21}}\mathbf{e}_1\\ - &= |\mathbf{w}|e^{-\theta_w \mathbf{e}_{12}}\mathbf{e}_1 + \mathbf{w} &= |\mathbf{w}|\left(\cos(\theta_w)+ \sin(\theta_w) \mathbf{e}_2\mathbf{e}_1\right)\mathbf{e}_1 +\end{align} +einsetzten. Mithilfe der Formel \eqref{EulerGA} und dem Wissen, dass $\mathbf{e}_{21}= -\mathbf{e}_{12}$ können wir die Umformung +\begin{align} + |\mathbf{w}|e^{-\theta_w \mathbf{e}_{12}}\mathbf{e}_1 \end{align} -und umstrukturiert wieder in die Vektorproduktformel einsetzen +ausführen. Diese wichtige Umstrukturierung können wir wieder in die Vektorproduktformel \eqref{VektorproduktformelGA} einsetzen un erhalten \begin{align} - \mathbf{wu} = |\mathbf{w}||\mathbf{u}|e^{-\theta_w \mathbf{e}_{12}}\mathbf{e}_1\mathbf{e}_1 e^{\theta_u \mathbf{e}_{12}}\\ - \mathbf{wu} = |\mathbf{w}||\mathbf{u}|e^{(\theta_u-\theta_w) \mathbf{e}_{12}}. + \mathbf{wu} &= |\mathbf{w}||\mathbf{u}|e^{-\theta_w \mathbf{e}_{12}}\mathbf{e}_1\mathbf{e}_1 e^{\theta_u \mathbf{e}_{12}}\\ + &= |\mathbf{w}||\mathbf{u}|e^{(\theta_u-\theta_w) \mathbf{e}_{12}}. \end{align} -Der Term $\mathbf{u}^{-1}\mathbf{w}^{-1}$ +Das inverse Vektorprodukt \begin{align} \mathbf{u}^{-1}\mathbf{w}^{-1} = \dfrac{1}{|\mathbf{w}||\mathbf{u}|}e^{(\theta_w-\theta_u) \mathbf{e}_{12}} \end{align} -kann durch die selbe Methode zusammengefasst werden. -Wenn wir den Winkel zwischen den Vektoren $\mathbf{w}$ und $\mathbf{u}$ als $\theta = \theta_w - \theta_u$ definieren erhalten wir +kann durch die selbe Methode vereinfacht werden. +Wenn wir den Winkel zwischen den Vektoren $\mathbf{w}$ und $\mathbf{u}$ als $\theta = \theta_w - \theta_u$ definieren erhalten wir als endgültige Form der Vektorprodukte \begin{align}\label{wuExpo} - \mathbf{wu} = |\mathbf{w}||\mathbf{u}|e^{-\theta \mathbf{e}_{12}}\\ - \mathbf{u}^{-1}\mathbf{w}^{-1} = \dfrac{1}{|\mathbf{w}||\mathbf{u}|}e^{\theta \mathbf{e}_{12}} \label{wuExpoInv} + \mathbf{wu} &= |\mathbf{w}||\mathbf{u}|e^{-\theta \mathbf{e}_{12}}\enspace\text{und}\\ + \mathbf{u}^{-1}\mathbf{w}^{-1} &= \dfrac{1}{|\mathbf{w}||\mathbf{u}|}e^{\theta \mathbf{e}_{12}} \label{wuExpoInv}. \end{align} -die finale Form der Vektorprodukte. \subsubsection{Umstrukturierte Drehungsgleichung} Setzten wir nun unsere neuen Erkenntnisse in die Gleichung \eqref{rotGA} ein \begin{align} - \mathbf{v''} = (|\mathbf{w}||\mathbf{u}|e^{-\theta \mathbf{e}_{12}}) \mathbf{v}( \dfrac{1}{|\mathbf{w}||\mathbf{u}|}e^{\theta \mathbf{e}_{12}}), + \mathbf{v''} = (|\mathbf{w}||\mathbf{u}|e^{-\theta \mathbf{e}_{12}})\mathbf{v}\biggl(\dfrac{1}{|\mathbf{w}||\mathbf{u}|}e^{\theta \mathbf{e}_{12}}\biggr), \end{align} erhalten wir durch die Kürzungen der Längen die vereinfachte Drehungsgleichung \begin{align} @@ -145,12 +162,12 @@ kann man sehen, dass nur der parallele Anteil $\mathbf{v_\parallel}$ des Vektors \end{align} und das Produkt der Inversen $\mathbf{u}^{-1}\mathbf{w}^{-1}$ \begin{align} - \mathbf{u}^{-1}\mathbf{w}^{-1} = (\dfrac{\mathbf{e}_1}{1^2})(\dfrac{2\mathbf{e}_2}{2^2}) = \dfrac{1}{2}\mathbf{e}_{12}. + \mathbf{u}^{-1}\mathbf{w}^{-1} = \biggl(\dfrac{\mathbf{e}_1}{1^2}\biggr) \left(\dfrac{2\mathbf{e}_2}{2^2}\right) = \dfrac{1}{2}\mathbf{e}_{12}. \end{align} Der rotierte Vektor $\mathbf{v}''$ können wir nun durch das einsetzten und auflösen der Produkte in die Gleichung \eqref{rotGA} \begin{align} - \mathbf{v}'' = (\mathbf{wu})\mathbf{v}(\mathbf{u}^{-1}\mathbf{w}^{-1}) &= (-2e_{12})(1\mathbf{e}_1 + \mathbf{e}_2 + 1\mathbf{e}_3)(\dfrac{1}{2}\mathbf{e}_{12})\\ - &= (2\mathbf{e}_2-2\mathbf{e}_1-2\mathbf{e}_{123})(\dfrac{1}{2}\mathbf{e}_{12})\\ + \mathbf{v}'' = (\mathbf{wu})\mathbf{v}(\mathbf{u}^{-1}\mathbf{w}^{-1}) &= (-2e_{12})(1\mathbf{e}_1 + \mathbf{e}_2 + 1\mathbf{e}_3)(\textstyle{\frac{1}{2}}\mathbf{e}_{12})\\ + &= (2\mathbf{e}_2-2\mathbf{e}_1-2\mathbf{e}_{123})(\textstyle{\frac{1}{2}}\mathbf{e}_{12})\\ &= -1\mathbf{e}_1 - 1\mathbf{e}_2 + 1\mathbf{e}_3 \end{align} finden. Aus dem Resultat $\mathbf{v}''= -1\mathbf{e}_1 + 1\mathbf{e}_2 + 1\mathbf{e}_3$ können wir bestätigen, dass @@ -159,11 +176,11 @@ kann man sehen, dass nur der parallele Anteil $\mathbf{v_\parallel}$ des Vektors \item sich der parallele Anteil $\mathbf{v_\parallel}'' = -1\mathbf{e}_1 - 1\mathbf{e}_2$ gedreht hat und der senkrechte Anteil $\mathbf{v_\perp}'' = 1\mathbf{e}_3$ unverändert blieb. \item der parallele Teil sich genau um $2\theta=180$° gedreht hat. $\theta$ kann übrigens durch die Umformung des Produkt $\mathbf{wu}$ in die Exponentialschreibweise \begin{align} - &\mathbf{wu} = -2\mathbf{e}_{12} = 2(0-1\mathbf{e}_{12})=2(\cos(\dfrac{-\pi}{2} + \sin(\dfrac{-\pi}{2})\mathbf{e}_{12})) = 2e^{(-\pi/2)\mathbf{e}_{12}} + &\mathbf{wu} = -2\mathbf{e}_{12} = 2(0-1\mathbf{e}_{12})=2(\cos\biggl(\dfrac{-\pi}{2}\biggr) + \sin\biggl(\dfrac{-\pi}{2}\biggr)\mathbf{e}_{12}) = 2e^{(-\pi/2)\mathbf{e}_{12}} \end{align} durch einen Vergleich mir der Formel \eqref{wuExpo} \begin{align} - \theta = -(\dfrac{-\pi}{2}) = \dfrac{\pi}{2} + \theta = -\biggl(\dfrac{-\pi}{2}\biggr) = \dfrac{\pi}{2} \end{align} ausgelesen werden. \end{itemize} diff --git a/buch/papers/clifford/9_KomplexeZahlen.tex b/buch/papers/clifford/9_KomplexeZahlen.tex index 70107da..aaccd3d 100644 --- a/buch/papers/clifford/9_KomplexeZahlen.tex +++ b/buch/papers/clifford/9_KomplexeZahlen.tex @@ -6,23 +6,34 @@ \section{Komplexe Zahlen} \rhead{Komplexe Zahlen} -Die komplexen Zahlen finden eine Vielzahl von Anwendungsgebiete in den Ingenieurwissenschaften. Das liegt daran, weil die komplexen Zahlen Rotationen und Schwingungen gut beschreiben können. Nach dem vorherigen Kapitel überrascht es wahrscheinlich nicht viele, dass es möglich ist komplexe Zahlen in der geometrischen Algebra darzustellen. Sie können durch die geraden Grade der 2 Dimensionalen geometrischen Algebra vollständig beschrieben werden: $\mathbf{g}_n \in G_2^+(\mathbb{R}) \cong \mathbb{C}$. Das bedeutet eine komplexe Zahl kann durch ein Skalar (Grad 0) und einem Bivektor (Grad 2) dargestellt werden +Die komplexen Zahlen finden eine Vielzahl von Anwendungsgebiete in den Ingenieurwissenschaften. Das liegt daran, weil die komplexen Zahlen Rotationen und Schwingungen gut beschreiben können. Nach dem vorherigen Kapitel überrascht es wahrscheinlich nicht viele, dass es möglich ist komplexe Zahlen in der geometrischen Algebra darzustellen. Sie können durch die geraden Grade der zweidimensionalen geometrischen Algebra vollständig beschrieben werden: $\mathbf{g}_n \in G_2^+(\mathbb{R}) \cong \mathbb{C}$. Das bedeutet eine komplexe Zahl \begin{align} a_0 + a_1 j \cong a_0 + a_1 \mathbf{e}_{12} = \mathbf{g}_n\quad a_0, a_1 \in \mathbb{R}\\ |r|e^{\theta j} \cong |r|e^{\theta \mathbf{e}_{12}} = \mathbf{g}_n; \quad r, \theta \in \mathbb{R} \end{align} -weil $j$ und $\mathbf{e}_{12}$ beide die Eigenschaft besitzen quadriert $-1$ zu ergeben +kann durch ein Skalar (Grad 0) und einem Bivektor (Grad 2) dargestellt werden, weil $j$ und $\mathbf{e}_{12}$ beide die Eigenschaft \begin{align} j^2 = -1\quad \mathbf{e}_{12}^2 = -1 \end{align} -Man beachte, dass wenn wir, wie bei den komplexen Zahlen, Elemente von $G_2^+(\mathbb{R})$ miteinander Multiplizieren, ist es nicht, wie im Kapitel Rotation bei der Formel (\ref{rotGA})beschrieben, eine Multiplikation von zwei $g_n$ mit einem Vektor. Im zweidimensionalen bewirken beide Multiplikationen grundsätzlich das Gleiche (eine Drehstreckung), aber die Multiplikation von mehreren $g_n$ ist kommutativ, wie wir es von den komplexen Zahlen kennen. +besitzen. Die Kommutativität \begin{align} - \mathbf{g}_1\mathbf{g}_2 = \mathbf{g}_2\mathbf{g}_1 \quad&\Leftrightarrow\quad (a + b \mathbf{e}_{12})(f + g \mathbf{e}_{12}) = (f + g \mathbf{e}_{12})(a + b \mathbf{e}_{12})\\ - \mathbf{g}_1\mathbf{v}\not= \mathbf{v}\mathbf{g}_1 \quad&\Leftrightarrow\quad(a + b \mathbf{e}_{12})(x\mathbf{e}_1+y\mathbf{e}_2)\not= (x\mathbf{e}_1+y\mathbf{e}_2)(a + b \mathbf{e}_{12}) + \begin{split} + \mathbf{g}_1\mathbf{g}_2 = \mathbf{g}_2\mathbf{g}_1 \enspace&\Leftrightarrow\enspace (a + b \mathbf{e}_{12})(f + g \mathbf{e}_{12}) = (f + g \mathbf{e}_{12})(a + b \mathbf{e}_{12})\\ &\Leftrightarrow\enspace |\mathbf{g}_1||\mathbf{g}_2|e^{(\theta_{g_1} + \theta_{g_2})\mathbf{e}_{12}} = |\mathbf{g}_2||\mathbf{g}_1|e^{(\theta_{g_2} + \theta_{g_1})\mathbf{e}_{12}}, + \end{split} \end{align} -Um später die Auswirkung der Quaternionen besser zu verstehen, möchte ich kurz darauf eingehen, was ein $g_n$ für eine Auswirkung auf einen Vektor hat. -Wir kennen diesen Effekt schon von den komplexen Zahlen. Wenn eine komplexe Zahl $c_1=a+bj$ mit einer zweiten $c_2=f+gj$ multipliziert wird, dann kann man diese so aufteilen. +welche wir schon von den komplexen Zahlen her kennen, ist dabei eine in der geometrischen Algebra nur selten anzutreffende Eigenschaft. Beispielsweise ist das geometrische Produkt von \begin{align} - c = c_1\cdot c_2 = (a + bj)(d + ej) = f\cdot(a+bj) + gj\cdot(a+bj) + \mathbf{g}_1\mathbf{v}\not= \mathbf{v}\mathbf{g}_1 \quad\Leftrightarrow\quad(a + b \mathbf{e}_{12})(x\mathbf{e}_1+y\mathbf{e}_2)\not= (x\mathbf{e}_1+y\mathbf{e}_2)(a + b \mathbf{e}_{12}) \end{align} -Dabei ist $f\cdot(a+bj)$ die jetzige komplexe Zahl $c_1$ um den Faktor $f$ steckt und $gj\cdot(a+bj)$ die um 90° im Gegenuhrzeigersinn gedrehte Zahl $c_2$ um den Faktor $g$ streckt. Diese Anteile addiert ergeben, dann den um $c_2$ dreh-gestreckten Vektor $c_1$. Die wirklichen Vorteile der geometrischen Algebra werden sich aber erst bei den Quaternionen zeigen.
\ No newline at end of file +und auch die im folgenden Kapitel behandelten Quaternionen nicht kommutativ. + +Um später die Auswirkung der Quaternionen auf Vektoren besser zu verstehen, möchte ich kurz darauf eingehen, was ein $\mathbf{g}_n$ für eine Auswirkung auf einen Vektor hat. +Wir kennen diesen Effekt schon von den komplexen Zahlen. Wenn eine komplexe Zahl $c_1=a+bj$ mit einer zweiten $c_2=f+gj$ multipliziert wird, dann kann man +\begin{align} + c = c_1\cdot c_2 = (a + bj)(d + ej) = a\cdot(d+ej) + bj\cdot(d+ej) +\end{align} +so aufteilen. Dabei ist $a\cdot(d+ej)$ die jetzige komplexe Zahl $c_2$ um den Faktor $a$ steckt und $bj\cdot(d+ej)$ die um 90° im Gegenuhrzeigersinn gedrehte Zahl $c_2$ um den Faktor $b$ streckt. Diese Anteile addiert ergeben, dann den um $c_1$ dreh-gestreckten Vektor $c_2$. Der gleiche Effekt hat +\begin{align}\label{GAdrehstreck} + \mathbf{v}' = \mathbf{g}\mathbf{v} = (a + b\mathbf{e}_{12})(d\mathbf{e}_{1} + e\mathbf{e}_{2}) = a(d\mathbf{e}_{1} + e\mathbf{e}_{2}) + b\mathbf{e}_{12}(d\mathbf{e}_{1} + e\mathbf{e}_{2}) +\end{align} +in der zweidimensionalen geometrischen Algebra. Im Falle der komplexen Zahlen macht es jetzt noch nicht wirklich Sinn in die geometrische Algebra zu wechseln. Die potenziellen Vorteile der geometrischen Algebra werden sich aber erst bei den Quaternionen zeigen.
\ No newline at end of file diff --git a/buch/papers/clifford/Makefile.inc b/buch/papers/clifford/Makefile.inc index e168ae8..fe32eba 100644 --- a/buch/papers/clifford/Makefile.inc +++ b/buch/papers/clifford/Makefile.inc @@ -14,7 +14,9 @@ dependencies-clifford = \ papers/clifford/4_GeometrischesProdukt.tex \ papers/clifford/5_PolareDarstellung.tex \ papers/clifford/6_PauliMatrizen.tex \ - papers/clifford/7_Reflektion.tex \ + papers/clifford/7_Spiegelung.tex \ papers/clifford/8_Rotation.tex \ papers/clifford/9_KomplexeZahlen.tex \ - papers/clifford/10_Quaternionen.tex + papers/clifford/10_Quaternionen.tex \ + papers/clifford/11_Fazit.tex + diff --git a/buch/papers/clifford/main.tex b/buch/papers/clifford/main.tex index ec44963..3649b20 100644 --- a/buch/papers/clifford/main.tex +++ b/buch/papers/clifford/main.tex @@ -16,10 +16,11 @@ \input{papers/clifford/4_GeometrischesProdukt.tex} \input{papers/clifford/5_PolareDarstellung.tex} \input{papers/clifford/6_PauliMatrizen.tex} -\input{papers/clifford/7_Reflektion.tex} +\input{papers/clifford/7_Spiegelung.tex} \input{papers/clifford/8_Rotation.tex} \input{papers/clifford/9_KomplexeZahlen.tex} \input{papers/clifford/10_Quaternionen.tex} +\input{papers/clifford/11_Fazit.tex} \printbibliography[heading=subbibliography] \end{refsection} |