Suche
Close this search box.

Epizykloiden-Morph

Das ist eine Art Bild­schirm­scho­ner, wel­cher unent­wegt Epi­zy­klen aus hin­ter­leg­ten Daten zeich­net und inein­an­der mor­pht. Durch Kli­cken auf die Zei­chen­flä­che wird zwi­schen drei Geschwin­dig­kei­ten umgeschaltet.

Das ist eine Demo, wel­che das Zeich­nen von Epi­zy­klo­iden ver­an­schau­li­chen soll und dabei kon­ti­nu­ier­lich ent­spre­chen­de Figu­ren zeich­net. Jede Figur ist als eine Lis­te aus zu addie­ren­den Dreh­be­we­gun­gen definiert. 

Eine Dreh­be­we­gung beschreibt einen sich um den Koor­di­na­ten­ur­sprung (0; 0) dre­hen­den Punkt und ent­hält dabei Wer­te für Abstand amp, Start­win­kel pha­se und Dreh­fre­quenz freq.

Gezeich­net wird die Epi­zy­klo­ide, die Figur, von t=0 bis t=2*pi. Die Dreh­be­we­gung mit der Fre­quenz freq=1 oder freq=-1 dreht sich da genau ein­mal ’rum, alle wei­te­ren dre­hen sich ganz­zah­lig schnel­ler links oder rechts her­um. Die Punk­te der Linie wer­den berech­net, indem man t von 0 bis 2*pi lau­fen lässt und für jeden Punkt bei x=0 und y=0 star­tet. Pro Dreh­be­we­gung wird dann x und y mit den For­meln aus dem Bild berech­net und  aufaddiert. 

Die ein­zel­nen Dreh­be­we­gun­gen wer­den in der Demo als wei­ße um den Mit­tel­punkt wir­beln­de, wie ein Zoll­stock zusam­men­hän­gen­de gera­de Lini­en dar­ge­stellt. Der End­punkt des »Zoll­stocks« beschreibt die zu zeich­nen­de Epizykloide.

Jede Figur ist defi­niert durch eine Lis­te aus Dreh­be­we­gun­gen. Hier sind zwei Beispiele:

 

				
					// Die Ziffer 2
_2 = [ { freq: -15, amp: 0.0133, phase: -0.6549 },  
{ freq: -14, amp: 0.0307, phase: -1.4426 },  
{ freq: -13, amp: 0.0397, phase: 1.7789 },  
{ freq: -12, amp: 0.0959, phase: 1.8671 },  
{ freq: -11, amp: 0.0928, phase: 2.7724 },  
{ freq: -10, amp: 0.0323, phase: -2.4101 },  
{ freq: -9, amp: 0.1411, phase: -0.2822 },  
{ freq: -8, amp: 0.2527, phase: 0.2828 }, 
{ freq: -7, amp: 0.2172, phase: 0.481 },  
{ freq: -6, amp: 0.0656, phase: -0.8955 },  
{ freq: -5, amp: 0.3207, phase: -1.1427 },  
{ freq: -4, amp: 0.568, phase: -1.2718 },  
{ freq: -3, amp: 0.4431, phase: -0.5724 },  
{ freq: -2, amp: 0.7873, phase: -3.0104 },  
{ freq: -1, amp: 1.3616, phase: -1.4518 },  
{ freq: 0, amp: 1.0858, phase: 1.3691 },  
{ freq: 1, amp: 1.3671, phase: -0.6549 },  
{ freq: 2, amp: 0.7768, phase: -1.4426 },  
{ freq: 3, amp: 0.4313, phase: 1.7789 },  
{ freq: 4, amp: 0.559, phase: 1.8671 },  
{ freq: 5, amp: 0.3247, phase: 2.7724 },  
{ freq: 6, amp: 0.0723, phase: -2.4101 },  
{ freq: 7, amp: 0.2094, phase: -0.2822 },  
{ freq: 8, amp: 0.2527, phase: 0.2828 },  
{ freq: 9, amp: 0.1463, phase: 0.481 },  
{ freq: 10, amp: 0.0293, phase: -0.8955 },  
{ freq: 11, amp: 0.0916, phase: -1.1427 },  
{ freq: 12, amp: 0.0974, phase: -1.2718 },  
{ freq: 13, amp: 0.0408, phase: -0.5724 },  
{ freq: 14, amp: 0.0312, phase: -3.0104 },  
{ freq: 15, amp: 0.0132, phase: -1.4518 }];
				
			
				
					// ein Pfeil nach rechts
_arrow = [ { freq: 2, amp: 2.763, phase: -3.14159 }, 
{ freq: 1, amp: 0.277, phase: 1.5707 }, 
{ freq: -1, amp: 2.773, phase: 1.577 }, 
{ freq: -2, amp: 2.763, phase: 3.141 } ];
				
			

Die Wer­te dazu habe ich mit­tels Fourier-Transformation ermit­telt. Dem The­ma habe ich einen eige­nen Bei­trag gewidmet.

Die ande­ren vari­ie­ren in Anzahl und den Wer­ten. Man kann die­se Daten­struk­tur auch als Spek­trum bezeich­nen, da jeder Fre­quenz ein Wert für amp und pha­se zuge­ord­net ist.

Über die Zeit wer­den die Spek­tren inein­an­der gef­a­det — die Wer­te schritt­wei­se inein­an­der über­führt und die­se Zwi­schen­stu­fen als Epi­zy­klo­ide gezeichnet.

Dabei kann man durch Kli­cken auf die Zei­chen­flä­che zwi­schen drei Geschwin­dig­kei­ten wählen:

  1. Nor­mal­ge­schwin­dig­keit — Die Epi­zy­klo­ide wird am Stück aus 1000 Weg-Punkten gezeich­net und pro Ani­ma­ti­ons­frame das anzu­zei­gen­de Spek­trum aus dem der aktu­el­len und der nächs­ten Figur berech­net. Das ist die schnells­te Stufe.
  2. ca. 100x Zeit­lu­pe — Man kann den Zei­chen­pro­zess bes­ser beob­ach­ten und die Lini­en wer­den exakter.
  3. ca. 3000x Zeit­lu­pe — Die feins­ten Schlei­fen wer­den gezeichnet.