Registriert seit: 26. Nov 2007
54 Beiträge
|
Re: Rotation im Raum klappt nicht richtig
31. Dez 2009, 06:33
Delphi-Quellcode:
procedure TWürfel.Rotate(Punkt: Integer; Achse: Char; Winkel: Integer);
Var x, y, z: Extended;
begin
case Achse of
'x': begin
x:=GetPunktKoordinate(Punkt,'x');
y:=GetPunktKoordinate(Punkt,'y');
z:=GetPunktKoordinate(Punkt,'z');
//Neue Werte errechnen
x:=(x*1);
y:=(x*0)+(y*(cos(DegToRad(Winkel))))-(z*(sin(DegToRad(Winkel))));
z:=(x*0)+(y*(sin(DegToRad(Winkel))))+(z*(cos(DegToRad(Winkel))));
//Neue Werte zurückgeben
PunkteArray[Punkt,1]:=x;
PunkteArray[Punkt,2]:=y;
PunkteArray[Punkt,3]:=z;
end;
'y': begin
x:=GetPunktKoordinate(Punkt,'x');
y:=GetPunktKoordinate(Punkt,'y');
z:=GetPunktKoordinate(Punkt,'z');
//Neue Werte errechnen
x:=(x*cos(DegToRad(Winkel)))+(y*0)+(z*(sin(DegToRad(Winkel))));
y:=(x*0)+(y*1)+(z*0);
z:=(-x*sin(DegToRad(Winkel)))+(y*0)+(z*(cos(DegToRad(Winkel))));
//Neue Werte zurückgeben
PunkteArray[Punkt,1]:=x;
PunkteArray[Punkt,2]:=y;
PunkteArray[Punkt,3]:=z;
end;
'z': begin
x:=GetPunktKoordinate(Punkt,'x');
y:=GetPunktKoordinate(Punkt,'y');
z:=GetPunktKoordinate(Punkt,'z');
//Neue Werte errechnen
x:=(x*cos(DegToRad(Winkel)))-(y*sin(DegToRad(Winkel)))+(z*0);
y:=(x*sin(DegToRad(Winkel)))+(y*cos(DegToRad(Winkel)))+(z*0);
z:=(x*0)+(y*0)+(z*1);
//Neue Werte zurückgeben
PunkteArray[Punkt,1]:=x;
PunkteArray[Punkt,2]:=y;
PunkteArray[Punkt,3]:=z;
end;
end;
end;
|
|
Zitat
|