Einzelnen Beitrag anzeigen

Ben19

Registriert seit: 25. Feb 2009
17 Beiträge
 
#26

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 1. Jun 2009, 11:19
Aso ja stimmt
Also hier ist die procedure die für die Drehung verantwortlich ist

Delphi-Quellcode:
procedure TForm1.bdrehungChange(Sender: TObject); //Rotation um beliebige Achse
var x,y,z,x1,y1,z1:real;j:integer;bogen:real;
begin
  objekteausblenden;
  bogen:=gradzubogen((Form1.bdrehung.Position-Gegenstaende[Auswahl].drehung[4]));
  for j:=1 to Gegenstaende[Auswahl].Punktzahl do
  begin
    x1:=Gegenstaende[Auswahl].Punktfeld[j][1]+Gegenstaende[Auswahl].ortsvektor[1];
    y1:=Gegenstaende[Auswahl].Punktfeld[j][2]+Gegenstaende[Auswahl].ortsvektor[2];
    z1:=Gegenstaende[Auswahl].Punktfeld[j][3]+Gegenstaende[Auswahl].ortsvektor[3];
    x1:=x1-strtofloat(form1.geradex.text);
    y1:=y1-strtofloat(form1.geradey.text);
    z1:=z1-strtofloat(form1.geradez.text);
    x:=strtofloat(form1.geraderx.text);
    y:=strtofloat(form1.geradery.text);
    z:=strtofloat(form1.geraderz.text);
    Gegenstaende[Auswahl].Punktfeld[j][1]:=(x*x*(1-cos(bogen))+cos(bogen))*x1+(x*y*(1-cos(bogen))-z*sin(bogen))*y1+(x*z*(1-cos(bogen))+y*sin(bogen))*z1+strtofloat(form1.geradex.text)-Gegenstaende[Auswahl].ortsvektor[1];
    Gegenstaende[Auswahl].Punktfeld[j][2]:=(x*y*(1-cos(bogen))+z*sin(bogen))*x1+(y*y*(1-cos(bogen))+cos(bogen))*y1+(y*z*(1-cos(bogen))-x*sin(bogen))*z1+strtofloat(form1.geradey.text)-Gegenstaende[Auswahl].ortsvektor[2];
    Gegenstaende[Auswahl].Punktfeld[j][3]:=(x*z*(1-cos(bogen))-y*sin(bogen))*x1+(y*z*(1-cos(bogen))+x*sin(bogen))*y1+(z*z*(1-cos(bogen))+cos(bogen))*z1+strtofloat(form1.geradez.text)-Gegenstaende[Auswahl].ortsvektor[3];
  end;
  Gegenstaende[Auswahl].drehung[4]:=Form1.bdrehung.Position;
  Form1.bdrehwert.Text:=inttostr(Form1.bdrehung.Position);
  objekteanzeigen();
end;
Vielen Dank im voraus
Ben19
  Mit Zitat antworten Zitat