Netz regelmäßiger Körper - Rotation Homogene Koordinaten

Autor:
hawe

Rotation Homogene Koordinaten - 3D Rotation um beliebige Achse

Rotation α um Achsedurch Ursprung n=(n1,n2,n3), |n|=1 Translation Rotation über die Kanten (rotation about edges) = Ro(-t0,n1,n2,n3,t1,t2,t3) Ro beschreibt eine 3D Rotation um eine beliebige Achse
  • Kantengerade in Ursprung verschieben - Rotation - zurück verschieben.
  • translate edge line to origin - rotate - translate back
  • combine all moves in matrix Ro
VerticesOH, VerticesUH - Eckpunkte Oben, Unten homogene Koordinaten VerticesO, VerticesU - Eckpunkte Oben, Unten kartesische Koordinaten VecG - Richtungs-Vektoren der Kantengeraden, TransO - Translationsvektoren Kantengeraden (zum/vom Ursprung) ROT - Rotationsmatrizen(Homogene Koordinaten) über alle Kanten (CAS) ROT:=Sequence(Ro(-t_0 , x(VecG(j)),y(VecG(j)),z(VecG(j)),TransO(j,1), TransO(j,2), TransO(j,3)),j,1,n); writeElement4Indexing, Search & Replace in Ro(t,n1,n2,n3,t1,t2,t3) RotVerticesOH, RotVerticesUH - Eckpunkte(i) Oben, Unten rotieren über ROTM(1..i) homogene Koordinaten RotVerticesO, RotVerticesU - Eckpunkte nach Rotation t0 Oben, Unten kartesische Koordinaten
  • die Kante(i) rotiert entsprechend dem Matrixprodukt ROTM(1....i)
  • über alle Kanten von 1...i
  • App instabil zum Zeitpunkt der Veröffentlichung: Listen brechen zusammen und verschwinden (list bug - report, but no responce)
Je nach Polygon n-Eck müssen die Flächen über unterschiedlich viele Kanten (n) rotieren, die für jede Kante einfach zu einem Matrixprodukt zusammengefasst werden. Ein entsprechendes Rotate()-Kommando müsste n-mal geschachtelt werden Rotate(Rotate(Rotate(...n-mal...)))) was bestenfalls gescriptet werden könnte.