Freitag, 1. Mai 2026

Ein Vertikalplotter für Kritzelkunst

Als 'Scribble Art' oder 'Kritzelkunst' wird eine Maltechnik bezeichnet, bei der Zeichnungen aus unregelmäßigen, oft schnellen und freien Strichen geschaffen werden. Typischerweise wirken die Werke zunächst wie zufällige Kritzeleien, doch durch Variation in Linienführung, Dichte und Bewegung entsteht ein erkennbares Motiv wie z.B. ein Portrait.

Die Software Drawing Bot kann Fotos in Vektorgrafiken und Plotter‑Art umwandeln, und unterstützt auch in der freien Version viele anpassbare Stile. Nachdem ich mit dem Online-Tool Photoroom den Hintergrund eines Bildes entfernt habe, habe ich die Voreinstellungen für den 'Pencil Sketch' Stil meinen Vorstellungen anpasst. Eine ausführliche Dokumentation aller Möglichkeiten findet sich hier.


Der exportierte gcode soll mit einer CNC Graviermaschine gezeichnet werden. 

Dafür habe ich einen Einsatz für die Spindelhalterung der Maschine gedruckt.


Dieser Einsatz kann z.B. einen Stabilo Fineliner der Stärke 0,4 mm aufnehmen, aber leider verlaufen die gezeichneten Linien auf normalem Druckerpapier. Auf Fotopapier ist das Ergebnis deutlich besser.


Für kleines Fotopapier müssen die Einstellungen der 'Drawing Area' auf 10,2 cm x 15,2 cm geändert werden.
Größere Formate lassen sich mit einem sogenannten Vertikalplotter drucken. Sie bestehen i.d.R. aus einem vertikal aufgestellten Rahmen und einer Gondel, in die der Stift geklemmt ist. Die Gondel wiederum hängt an zwei Seilen oder Zahnriemen, die durch Schrittmotoren bewegt werden. Die Zahnriemen werden mit Hilfe von Gewichten stramm gehalten. Ich habe hierfür zwei kleine Actimel Becher mit Estrichbeton ausgegossen, und mit Haken versehen. 


Mit dieser Anordnung kann der Stift alle Punkte der Zeichenebene erreichen. Die Position des Stiftes kann aus den Umdrehungen der Motoren berechnet werden. 
Die beiden Seillängen seien \(L_1\) (links) und \(L_2\) (rechts) , und \(D\) die Distanz zwischen den Motoren.  Nehmen wir an, dass der linke Motor bei \((0,0)\) sitzt, der rechte Motor bei \((D,0)\), und der Stift bei \((x,y)\) sitzt.

Dann gilt:

\[L_1 = \sqrt{x^2 + y^2}\]

\[L_2 = \sqrt{(D - x)^2 + y^2}\]

Gesucht sind nun \(x\) und \(y\). Wir lösen das Gleichungssystem, und versuchen \(y\) zu eliminieren. Es gilt:

\[L_1^2 - x^2 = L_2^2 - (D - x)^2\]

Ausmultipliziert und nach \(x\) aufgelöst ergibt sich:

\[x = \frac{L_1^2 - L_2^2 + D^2}{2D}\]

Für \(y\) ergibt sich entsprechend:

\[y = \sqrt{L_1^2 - x^2}\]

Wenn jede Rolle einen Radius \(r\) hat und sich um \(N_\text{L}\) bzw. \(N_\text{R}\) Umdrehungen gedreht hat, dann ist die abgewickelte Seillänge:

\[L_1 = L_{1,0} - 2\pi r\,N_\text{L}\]

\[L_2 = L_{2,0} - 2\pi r\,N_\text{R}\]

\(L_{1,0}\) und \(L_{2,0}\) sind dabei die Ausgangslängen der Seile bei der Home-Position des Stiftes.  

Das Programm vplotter macht diese Berechnungen, und ist auf einem Raspberry Zero 2 gut lauffähig. Die Anschlussbelegung des Raspberry ist unten zu sehen. 


Im github repository von vplotter sind die notwendigen Installationsschritte beschrieben. Auch ein rudimentärer Bauplan ist enthalten. 
Als Steppermotoren kommen zwei NEMA 17 Schrittmotoren zum Einsatz. Sie besitzen einen Vollschrittwinkel von 1.8°, eine Stromaufnahme von 1.5A pro Phase und ein Haltemoment von 0.38Nm. Als Treiber kommen je ein A4988 Schrittmotor-Treiber-Modul mit Kühlkörper zum Einsatz. Die Schrittauflösung kann durch Setzen der 'Microstepresolution' auf der Treiberplatine von 200 pro voller Umdrehung auf z.B. 1600 erhöht werden ('step of eight'). Das Bild unten zeigt die Anschlussbelegung der Motortreiberschaltung.


Dabei sind 1A und 1B die Anschlüsse für die erste Spule des Motors, 2A und 2B die für die zweite. Die Stromaufnahme habe ich mit dem kleinen Poti auf den boards auf ca. 1A begrenzt. Eine genaue Anleitung findet sich hier.

Die Befestigungen die Steppermotoren und die Umlenkrollen, sowie die Gondel für den Stift, habe ich aus PLA gedruckt. Die Gondel findet sich hier im Thingiverse


Um die 12V Versorgungsspannung für die Schrittmotoren zu erzeugen, habe ich eine kleine USB-C-PD-Triggerschaltung für Netzteile, die das USB Power Delivery Protokoll unterstützen, verbaut. Die gewünschte Spannung lässt sich mit DIP Schaltern einstellen. Zur Spannungsstabilisierung sind zusätzlich zwei 10µF Kondensatoren verbaut.


Im Bild unten ist im Hintergrund auch der auf die Gondel geklebte 9G Micro Servo Motor zu sehen, der den Stift hebt bzw. senkt. Das PWM Signal ist über einen 1k Ohm Widerstand mit dem Servomotor verbunden. 


Die gesamte Elektronik ist mit Abstandshaltern auf die Rückseite der MDF-Platte geschraubt, die die Zeichenebene bildet.


Nachdem die Hardware soweit fertig gestellt ist, habe ich zunächst versucht, einen Smiley zu plotten. Das online tool ncviewer zeigt den gcode an, und kann ihn simulieren.


Der Aufruf von vplotter für die Datei test.ngc erfolgt mit

sudo vplotter --x0=190 --y0=-230 --baselength=687 --z_up=7 --z_down=11 --steps=33 < test.ngc

Die Befehlszeilen‑Argumente haben dabei die folgenden Bedeutungen:

-- x0: Horizontale Entfernung vom linken Schrittmotor bis zum Nullpunkt der Zeichenfläche in mm.  
-- y0: Vertikale Entfernung vom linken Schrittmotor bis zum Nullpunkt der Zeichenfläche in mm.  
-- baselength: Abstand zwischen den beiden Schrittmotoren in mm.  
-- z_up: Wert für den Servomotor, um den Stift anzuheben (1 – 100).  
-- z_down: Wert für den Servomotor, um den Stift zu senken (1 – 100).  
-- steps: Anzahl der Schritte, um die Schnur um 1 mm zu bewegen. Hier:

  \[\text{steps} = \frac{1600}{\text{Umfang der Riemenscheibe}}\]

Das erste Ergebnis ist durchaus vielversprechend.



Anschließend habe ich versucht ein größeres Bild zu plotten. Ich habe dazu eine Malbuchvorlage mit Drawing Bot bearbeitet. Das Bild unten zeigt die Vorschau im ncviewer.


und während des Zeichenvorgangs. Zu erkennen sind des weiteren zusätzliche Gewichte, die ich an der Gondel angebracht habe, um sie zu stabilisieren. 



Damit liefert der Plotter recht schöne Ergebnisse, wie ich finde.


Viel Spaß beim selber basteln und plotten...








Sonntag, 22. Februar 2026

Quaternionen und Drehungen im Raum

Die Quaternionen sind ein Zahlenbereich, der den Bereich der reellen Zahlen erweitert – ähnlich den komplexen Zahlen und über diese hinaus. Beschrieben und systematisch fortentwickelt wurden sie ab 1843 von William Rowan Hamilton. Sie werden deshalb auch Hamilton-Zahlen genannt. Hamilton war Absolvent des Trinity College in Dublin, und wurde dort im Alter von 21 Jahren zum Andrews-Professor für Astronomie gewählt, noch bevor er sein Grundstudium abgeschlossen hatte. Das Bild unten zeigt ein Porträt von Sir Hamilton, im Treppenaufgang des dortigen 'Department of Physics'.

Die folgenden Ausführungen orientieren sich an einer Vorlesung von Dr Kenneth Joy an der UC Davis (University of California).


Quaternionen erweitern den komplexen Zahlenraum ins Vierdimensionale. Der komplexen Einheit \(i\) werden die Einheiten \(j\) und \(k\) hinzugefügt. Multiplikativ werden die neuen Zahlen gemäß den Regeln \(i^2=j^2=k^2=ijk=-1\) verknüpft.


Schreiben wir Quaternionen in der Form \((a,\vec{v})\), werden sie wie folgt addiert und multipliziert.


Sie sind normierbar und haben ein Inverses.


Allerdings ist die Multiplikation zweier Quaternionen nicht kommutativ,


denn \(v_2 \times v_1\) zeigt in die entgegengesetzte Richtung von \(v_1\times v_2\). Quaternionen bilden daher einen Schiefkörper, also eine algebraische Struktur, die alle Eigenschaften eines Körpers besitzt, außer dass die Multiplikation kommutativ ist.

Interessant für Anwendungen macht Quaternionen die Tatsache, dass Einheitsquaternionen Drehungen um einen Winkel \(\varphi\) entlang einer Achse \(\vec{v}\) im dreidimensionalen Raum vermitteln. Die Schreibweise als \((\cos{\varphi}, \sin{\varphi}\vec{v})\) ist dafür hilfreich.


Möchte man z.B. eine Trackball Anwendung zum Drehen eines Objekts in einem CAD Programm schreiben, so kann man sich das Objekt inmitten einer gedachten Sphäre vorstellen.


Ein 'Klick' auf die Sphäre definiert einen ersten Vektor zum Mittelpunkt, und anschließendes 'Ziehen' definiert einen zweiten Vektor. Das Kreuzprodukt der beiden Vektoren bestimmt dann die Drehachse, und das Skalarprodukt der beiden Vektoren definiert den Drehwinkel. Alle relevanten Punkte des Modells können nun gemäß dem so definierten Quaternion gedreht werden.

Um einen Punkt \(p\) mit Hilfe des Quaternions \(q\) im Raum zu drehen, muss  \(p\) auf \(q\cdot p\cdot q^{-1}\) abgebildet werden. Dabei ist \(q\) ein auf Eins normiertes Einheitsquaternion. 

Um zu veranschaulichen was bei den Multiplikationen genau passiert, müssen wir uns zunächst mit dem Konzept der stereografischen Projektion vertraut machen. Die folgenden Bilder sind mithilfe eines 'explorable videos' von Ben Eater erstellt. Das Bild unten zeigt die Projektion eines Kreises auf eine eindimensionale Gerade. 


Das Projektionszentrum liegt bei \(-1\). Dadurch wird \(1\) auf \(0\), \(i\) auf \(1\), \(-i\) auf \(-1\),  und \(-1\) auf \(\pm \infty\) projiziert. Jeder Punkt auf dem Kreis wird durch die Abbildung eindeutig auf einen Punkt auf der Gerade abgebildet.
Projizieren wir eine Kugel stereographisch auf eine Ebene, so bleibt der Äquator in z-Richtung, von (-1,0,0) aus projiziert, ein Kreis. Eine Neuorientierung der Kugel soll hier zunächst mithilfe von nur drei  Komponenten in der Form \(a + bi + cj\) versucht werden. Die Projektion erfolgt in die von \(i\) und \(j\) aufgespannte Ebene.


Verkippen wir die Kugel in eine von \(i\) und \(j\) vorgegebene Richtung indem wir den Realteil \(a\) verringern, 'schiebt' der Kreis in diese Richtung und der Radius vergrößert sich, solange \(\varphi < 90°\) ist. Im Insert des Bildes unten ist dies schön zu erkennen.


Eine Verkippung um genau  90° erzeugt einen unendlich großen Radius, der in der Projektion als Gerade erscheint. Weiteres Verkippen projiziert die Kugel schließlich in den gegenüberliegende Halbebene.


Tatsächlich lässt sich die Lage eines Punktes auf der Kugeloberfläche zwar durch eine Richtung in der \(i\)-\(j\) Ebene und einem Kippwinkel beschreiben, nicht jedoch die Lage der gesamten Kugel. Da die Kugel zusätzlich um den durch die Richtung in der Ebene und den Kippwinkel definierten Vektor rotieren kann, existiert ein zusätzlicher Freiheitsgrad.  Zur Veranschaulichung habe ich im Bild oben einen der projizierter Punkte rot markiert. Lassen wir die Kugel wie in diesem Beispil um 29° rotieren, wandert auch der markierte Punkt auf dem projizierten Kreis weiter.  In diesem Sinne sind drei  Zahlen nicht ausreichend um die Lage einer Kugel im Raum zu beschreiben. 


Betrachten wir als nächstes die Projektion einer vier dimensionalen Hypersphäre. Diese Projektion wollen wir durch Multiplikation mit einem Quaternion \(q_1\) manipulieren. 


Die Einheitskugel stellt den von 4D nach 3D projizierten 'Äquator' der Hypersphäre dar. Analog zur Projektion von 3D nach 2D vergrößert sich der Radius der Kugel wenn der Realwert von \(q_1\) kleiner wird, und die Kugel 'verschiebt' sich in die Richtung, die durch \(i\), \(j\) und \(k\) vorgegeben wird. Im obigen Beispiel ist dies die \(i\)-Achse.


Zusätzlich zur Verschiebung und Vergrößerung findet jedoch eine Drehung um den durch \(i\),\(j\) und \(k\) gegebenen Vektor statt. In den Bildern oben ist die Position von \(q_1 \cdot k\) rot markiert. Von \(\varphi\) = 20° nach \(\varphi\) = 45° dreht sich die Kugel um 25° weiter. 


Eine Multiplikation mit dem inversen Quaternion \(q_2\) von rechts führt nun die Verschiebung und Vergrößerung der 'Äquatorkugel' auf die Einheitskugel zurück. Im Bild oben ist die Position von \(q_1 \cdot k \cdot q^{-1}\) erneut rot markiert. Die Kugel dreht sich allerdings bei der Multiplikation von  rechts mit \(\varphi =\) - 45° um + 45° weiter. Insgesamt hat sich die Kugel also um 2 \(\times\) 45° = 90° gedreht. Man nennt dies auch '\(4\pi\)' - Periodizität der Quaternionen.
 

Im Beispiel oben haben wir jeden Punkt auf der Einheitskugel um 90° gedreht. Allgemein gilt für Drehungen von \(\mathbf{x}=(0,\vec{x})\) um einen Winkel \(\varphi\)

\[ \mathbf{x'}= \mathbf{q} \cdot \mathbf{x} \cdot \mathbf{q^{-1}}\]

mit 

\[\mathbf{q} = \left( \cos\!\left(\frac{\varphi}{2}\right),\; \sin\!\left(\frac{\varphi}{2}\right)\vec{v} \right)\]

und 

\[\mathbf{q^{-1}} = \left( \cos\!\left(\frac{\varphi}{2}\right),\; -\sin\!\left(\frac{\varphi}{2}\right)\vec{v} \right)\]

Viel Spaß beim selber rechnen...

Dienstag, 3. Februar 2026

Die Masse und das Higgs

Betrachten wir die Wellengleichung eines masselosen Teilchens,


so erhalten wir nach Einsetzen einer Lösung der Differentialgleichung die unterstehende, wohlbekannte Dispersionsbeziehung. Die Bilder dieses Artikels sind dem sehr lehrreichen YouTube Video 'What The Higgs Boson Actually Is' entnommen. 


Erweitern wir die Wellengleichung um den Term \(\Omega_0^2\varphi\), so erhalten wir durch Einsetzen der gleichen Lösung eine leicht unterschiedliche Beziehung zwischen \(\omega\) und \(k\).


Graphisch aufgetragen ergibt sich:


Für kleine Werte von \(k\) strebt \(\omega\) und damit die Energie des Systems nun nicht mehr gegen Null sondern gegen einen festen Wert \(\hbar\Omega_0\).


Der erhaltene Ausdruck für die Energie \(E\) weist eine erstaunliche Ähnlichkeit zu dem aus der speziellen Relativitätstheorie bekannten Zusammenhang \(E^2=(pc^2)^2 + (mc^2)^2\) auf. Wir können \(\Omega_0\) also als ein Maß für die Masse eines Teilchens interpretieren. 


Desweiteren können wir den Term \(\Omega_0^2\varphi\) als Kraft auf ein Teilchen interpretieren, die wir aus der Ableitung eines Potentials \(V\) gewinnen. Im Gegensatz zu mechanischen Systemen erfolgt die Ableitung hier jedoch nicht nach einem Ort \(x\) sondern nach der Feldstärke \(\varphi\).


Das so beschriebene System wird sich natürlicherweise im Minimum des Potentials \(V\) einfinden. Was geschieht jedoch leicht außerhalb des Minimums?


Dazu entwickeln wir das Potential \(V\) um \(\upsilon\)  und erhalten:


Da \(V'(\upsilon) = 0\) verbleibt nur die zweite Ableitung in der Entwicklung. 


Die Masse des Teilchens, das durch \(\varphi\) repräsentiert wird, ist also durch die Krümmung des Potentials an dessen Minimum bzw. am Ruhepunkt gegeben.


Ein masseloses Photon lässt sich als Grenzfall der um einen Masseterm ergänzten Wellengleichung verstehen.


Tatsächlich aber erhalten die meisten Teilchen ihre Masse nicht durch die Krümmung ihres eigenen Potentials, sondern aus der Wechselwirkung mit einem anderen Feld, dem sogenannten Higgsfeld.
Allgemein ist die Überlagerung zweier Potentiale gegeben durch:


Ein sinnvoller Ansatz für den Wechselwirkungsterm \(V_{int}\) ergibt sich für


denn \(V_{int}\) verschwindet wenn eines der beiden Felder Null ist, und die Wechselwirkung erzeugt z.B. in der \(\chi\) Gleichung eine Masseterm, wenn die Amplitude des Feldes \(\varphi\) einen Ruhepunkt \(\upsilon\) ungleich Null erreicht. 
Im Folgenden sei \(\chi\) masselos, und wir wollen \(U = 0\) setzen.


Für die Wellengleichung von \(\chi\) ergibt sich also:


und \(\chi\) hat Masse aus der Wechselwirkung mit \(V\) bezogen.


Doch wie genau soll das Potential \(V\) nun geformt sein? Ein quadratisches Potential erfüllt offensichtlich die Anforderung eines von Null unterschiedlichen Ruhepunktes nicht. Das sogenannte 'Sombrero' Potential hingegen schon.

Graphisch aufgetragen sieht dieses Potential in einer Dimension wie folgt aus:


Das Potential hat 'Ruhepunkte' bei \(\varphi=0\) und \(\varphi= \pm \frac{\mu}{\sqrt{\lambda}}\).


Wenn also ein masseloses Teilchen mit dem Potential des Higgs Feldes wechselwirkt, relaxiert es in ein von Null unterschiedliches Minimum und erhält Masse. Das ist der sogenannte Higgs-Mechanismus.


Doch wie steht es um die Quantisierungen des Higgsfeldes \(\varphi\)? Sind die Quanten masselos oder massebehaftet?

Dazu betrachten wir erneut die Wellengleichung von \(\varphi\)


und entwickeln um den Ruhepunkt \(\upsilon\).


Da \(\upsilon\) konstant ist, verbleiben für die ersten beiden Terme nur die Ableitungen von \(h\).


Für den dritten Term ergibt sich \(2\mu^2h + 3\lambda\upsilon h^2 + \lambda h^3\),


und für den vierten Term \(g^2\chi^2\upsilon + g^2\chi^2 h\).


 Insgesamt erhalten wir also:


Da aber \(h\) nur eine kleine Störung ist, und \(\chi\) sich nach dem Higgs-Mechanismus bei Null relaxiert, können wir Terme höherer Ordnung vernachlässigen, und es bleibt die folgende Wellengleichung.

Die Gleichung beschreibt die Dynamik kleiner Störungen um den Ruhepunkt des Higgsfeldes. Quantisieren wir diese Schwingungen erhalten wir das Higgs-Boson. Seine Masse ist näherungsweise gegeben durch

\[m_h = \frac{\hbar \sqrt{2\mu}}{c^2}\]

Im Vergleich mit den meisten anderen Elementarteilchen hat das Higgs-Boson mit etwa 125 \(GeV/c^2\) eine sehr große Masse. Um die zur Erzeugung solch schwerer Teilchen benötigte Energie aufzubringen, werden große Teilchenbeschleuniger benötigt. Zum Zeitpunkt der Vorhersage des Higgs im Jahre 1964 durch Peter Higgs standen diese noch nicht zur Verfügung. Der Nachweis erfolgte erst im Juli 2012 am CERN. Sowohl der ATLAS Detektor als auch das CMS Experiment am Large Hadron Collider 


bestätigten die Existenz des Higgs als Schulter in der Energieverteilung von Teilchen, die bei Kollision von Protonen, die annähernd auf Lichtgeschwindigkeit beschleunigt wurden.



Viel Spaß beim selber rechnen...