Einzelnen Beitrag anzeigen

Kytrix

Registriert seit: 26. Nov 2007
54 Beiträge
 
#4

Re: Rotation im Raum klappt nicht richtig

  Alt 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;
  Mit Zitat antworten Zitat