[BraLUG] ein wenig Geometrie

Fred Koegler koegler.brb at t-online.de
Fr Feb 9 13:49:47 CET 2007


Am Freitag, 9. Februar 2007 11:17 schrieb Uwe Berger:
> Kannst du mir den Syntax mal erklären:
Du hast schon die richtige Erklärung.

Trotzdem noch etwas länger, s.a.g.u. (s.a.g.u. = "siehe auch ganz unten")
Hör mit dem Lesen auf, wenn es zu einfach wird.

>
> xyz1 = <2,6,0>;
// Ortsvektor des 1.Punktes:
xyz1.x=2; xyz1.y=6; xyz1.z=0;
> xyz2 = <7,1,3>;
// Ortsvektor des 2.Punktes:
xyz2.x=7; xyz2.y=1; xyz2.z=3;
>
> dxyz = xyz2-xyz1;
// Differenz der Vektoren = Richtungsvektor der Linie
dxyz.x=xyz2.x-xyz1.x;
dxyz.y=xyz2.y-xyz1.y;
dxyz.z=xyz2.z-xyz1.z;
>
> dx = abs(dxyz.x);
> dy = abs(dxyz.y);
> dz = abs(dxyz.z);
// absolute Differenzen, um später den max. Wert zu ermitteln
dx=abs(dxyz.x);
dy=abs(dxyz.y);
dz=abs(dxyz.z);
>
> Sieht ein wenig komisch aus... Ist bei dieser Rechenoperation (dxyz =
> xyz2-xyz1;) gemeint, dass jeweils die beiden x-, y- und z-Koordinaten
> von einander abgezogen werden?
...
led xyz1 
heißt LED am "Ausgangspunkt" xyz1.x=2; xyz1.y=6; xyz1.z=0; mit 30mA ? 
versorgen

led xyz1+<round(dxyz.x*i/dd),round(dxyz.y*i/dd),round(dxyz.z*i/dd)>
heißt LED an Stelle xyz1.x+round(dxyz.x*i/dd); u.s.w mit 30mA ? versorgen

Ortsvektor zu einem weiteren Punkt der Linie = Ortsvektor eines Punktes auf 
der Linie + Richtungsvektor * Zahlenfaktor
Für die Achskomponente der größten Differenz ist i/dd immer eine Ganze Zahl.
z.B. hier dx=5 und dxyz.x=+5 und dd=5
bei dxyz.x/dd=1 folgt xyz_led_on.x = xyz1.x+round(dxyz.x*i/dd) = xyz1.x+i
oder bei einer anderen IF-Folge dy=5 und dxyz.y=-5 und dd=5



Viel Spaß mit den 512 LED's und den vielen feinen, möglichst unsichtbar 
verlegt und verlöteten Drähtchen!
Bleib bei sparsamen Licheffekten, denn 512 * 30mA = 15,36A !

-- 
Mit freundlichen Grüßen
Fred Koegler



Mehr Informationen über die Mailingliste Bralug