Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mehrere Objekte auf einer Ellipsenbahn kreisen lassen (https://www.delphipraxis.net/34934-mehrere-objekte-auf-einer-ellipsenbahn-kreisen-lassen.html)

rabbitRUN 30. Nov 2004 13:12


Mehrere Objekte auf einer Ellipsenbahn kreisen lassen
 
Hi, schreibe gerade an einem Programm das mir erlaubt verschiedene Ellipsenbahn mit Hilfe von Shapes darstellen zu lassen. Hänge jetzt jedoch an einem evtl. sehr kleinem Problem, doch ich find dafür einfach keine Lösung deswegen lass ich euch mal ran ;). Das Programm läuft wie folgt ab:

- ich erstelle ein Shape und stelle die benötigten Werte ein damit daraus eine Ellipsenbahn berechnet werden kann -> alles klappt so wie ich es will
- ich erstelle das nächste Shape, und zack werden alle Ellipsenbahnen um ca. die Hälfte verkleinert, das geht immer weiter je mehr Bahnen berechnet werden müssen


Ich poste mal nur die stellen des Quelltextes wo der Wurm drin sein muss
Delphi-Quellcode:
var
  Form1: TForm1;
  Ellipsenbahn :TEllipsenbahn;
  Ellipsenbahn2: TEllipsenbahn;
  x,y,a,b: array of integer;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  anfang : Integer;
begin
     for anfang := 0 to i do
       begin
          Ellipsenbahn.get_Werte(IntToStr(a[anfang]),intToStr(b[anfang]),IntToStr(x[anfang]),IntToStr(y[anfang]),FloatToStr(i));
          Ellipsenbahn.berechne_bahn(x[anfang],y[anfang]);
         with TShape(FindComponent(NamePrefix + IntToStr(Anfang))) do
            begin
              Left := x[Anfang];
              Top := y[Anfang];

            end;

      end;
end;
In den jeweiligen Arrays sind halt die zuvor selbst eingetragenen Werte (Startposition und länge der Achsen)

Hier nochmal zwei Auszüge aus der Fachklasse, wobei diese eigentlich nicht für das Problem verantwortlichs ein sollte, oder ? :o

Delphi-Quellcode:
procedure TEllipsenBahn.get_Werte(a,b,x,y,i:string);
begin
a1 := a;
b1 := b;
xStart := x;
yStart := y;
multiplikator := i;
end;

procedure TEllipsenBahn.berechne_bahn(var ox,oy:Integer);
begin

TGradmass := TGradmass +1;
TBogenmass := (TGradmass/180) *(2* pi);
xStart := FloatToStr(ox);
yStart := FloatToStr(oy);
oy := round(StrToFloat(yStart) + StrToFloat(b1)*(cos(TBogenmass)/5)) ;
ox := round(StrToFloat(xStart) + StrToFloat(a1)*(sin(TBogenmass)/5)) ;
if TGradmass = 360 then TGradmass := 0;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz