Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Shaded Hearts. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Faxter

Lead thy life as thou seest fit

  • »Faxter« ist männlich
  • »Faxter« ist der Autor dieses Themas

Beiträge: 755

Wohnort: Kiel

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

1

18.10.2014, 20:22

Programme, Scripts und Coding!

In diesem Thread darf (und soll!) man gerne kleine Projekte vorstellen, die man Just-for-Fun oder als kleine Problemlösungen erstellt hat.
Ob das nun ein Programm, ein Script, ein Fetzen HTML oder sonst Vergleichbares ist, spielt hierbei keine Rolle.
Hauptsache lustig, nützlich oder total verrückt.

Ich fang einfach mal an mit einem kleinen Projekt, das ich heute durchgezogen hab, nachdem ich diesen Post auf tumblr entdeckt hatte. Es handelt sich dabei um eine Art der Euler-Spirale. Nimm eine Linie gegebener Länge, dann füge eine Linie gleicher Länge an, allerdings mit etwas größerem Winkel. Die Winkel der folgenden Linien zueinander werden dann immer kleiner und fluktuieren dann periodisch.
Für die Umsetzung entschied ich mich für ein Script in MatLab:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
% Graphical presentation of a variant of the Euler-Spirale
% by Faxter, 2014
 
% starts with a line of given length, then adds another line from the
% ending point with same length and incremented angle.
 
% uses fxLine: function [p1] = fxLine(phi,l,p0)
% where phi is an angle in degree, l is length of the line, p0 the
% starting point, p1 the destination point
 
% initialisation
% _________________________________________________________________________
 
start = [0 0];      % start at origin
rep = 5000;         % number of cycles to do
linelen = 1;        % length of the lines to use
phi0 = 0;           % starting value of angle
deltaphi = 300;     % amount of angle to be added per rep
incphi = 3.7;       % amount of angle to be incremented between lines per rep
 
% implementation
% _________________________________________________________________________
 
figure('units','normalized','outerposition',[0 0 1 1]);
for i = 1:rep
    dest = fxLine(phi0,linelen,start);                  % determine destination of line
    plot([start(1) dest(1)],[start(2) dest(2)]);        % draw line
    hold on;                                            % keep plot alive
    phi0 = phi0 + deltaphi;                             % increment angle
    deltaphi = deltaphi + incphi;                       % increment angle between lines
    start = dest;                                       % set destination as start for next line
    if i<20
        pause(0.3);
    else
        pause(0.01);
    end
end

Oder mit Syntax-Hervorhebung auch hier (PasteBin).

Eine schöne Kurve, die ich damit erzeugt habe, hab ich einfach mal auf Youtube hochgeladen:


Hier noch ein paar Bilder.
Dieses hier ist die Sache aus dem Video mit mehr Linien.


Teilweise werden die Kurven auch periodisch in hübschen "Tischdeckchenmustern" oder auch direkt periodisch nach zwei "Kringeln". Dazu ein paar Screenshots von Ergebnissen mit unterschiedlichen Parametern:




Wenn man den Winkel zwischen den Linien immer gleich bleiben lässt, entstehen Kreisannäherungen. Wenn der Winkel allerdings sehr groß wird, sieht die Approximation plötzlich recht lustig aus:

Mayst thou thy peace discov'r

Ähnliche Themen