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