Hallo
- Jep die polygone sind einseitig. zu anfang habe ich 3
punkte mit (x/y/z) des polygons.
- wenn ich das polygon nur um 30° um die x-achse drehe und
danach den winkel abfrage, kommt korrekterweise 30° raus, wenn
ich es aber um -30° drehe, kommt auch 30° heraus, wenn ichs um
210° drehe, genauso…
- wenn ich zb. das polygon um -30° um x, danach 30° um y und
zuletzt wieder -30° um z drehe, und dieses danach wieder
gerade machen will, dann also 30° um x zurückdrehn, -30° um y
und 30° um z, ist es hinterher nicht gerade, wie man annimmt,
sondern viel mehr verdreht, weil ich in der falschen
reihenfolge gedreht hab… schwer zu erklären und
nachzuvollziehen, am besten in ner 3D software ausprobieren,
dann merkt man das problem… das ist so ähnlich wie mit dem
rubikswürfel, ich weiß vorher nicht an welcher seite ich
zuerst drehen muß (mal abgesehn von den anderen problemen)
hoffe jetzt ist es klarer… HILFE!!!
OK, gib doch mal einen Satz von konkreten Beispielkoordinaten
hier an, und zwar so, wie Du sie programmiert hast. Dann
kann man auch gleich die Programmiersprache erkennen 
Ich denke, man muß nur die sog. „Eulerwinkel“ ausrechnen
und das sollte es gewesen sein.
Eulerwinkel klingt interessant 
Programmiert ist das ganze in LScript, Skriptsprache für Lightwave. Deshalb hier erstmal nur der code, koordinaten holt der sich direkt aus dem lightwave objekt. aber kann ich gerne rausschreiben, falls es noch nötig sein sollte… achja, wie man sieht, mag lscript minus-operationen nich so, da muß man tricksen, dann siehts halt so aus wie unten…
main
{
editbegin();
ww=polyinfo(polygons[1]);
v1=pointinfo(ww[2]);
v2=pointinfo(ww[3]);
v3=pointinfo(ww[4]);
ex1=v1.x;
ey1=v1.y;
ez1=v1.z;
ex2=v2.x;
ey2=v2.y;
ez2=v2.z;
ex3=v3.x;
ey3=v3.y;
ez3=v3.z;
er1=ex2+(-ex1);
er2=ey2+(-ey1);
er3=ez2+(-ez1);
es1=ex3+(-ex1);
es2=ey3+(-ey1);
es3=ez3+(-ez1);
nx=(er2*es3)+(-(er3*es2));
ny=(er3*es1)+(-(er1*es3));
nz=(er1*es2)+(-(er2*es1));
fac2=sqrt(nx*nx+ny*ny+nz*nz);
fac3=acos(nz/fac2);
winkel3=deg(fac3);
fac3=acos(ny/fac2);
winkel2=deg(fac3);
fac3=acos(nx/fac2);
winkel1=deg(fac3);
info("x " + winkel1);
info("y " + winkel2);
info("z " + winkel3);
}