![]() |
Unser Infolehrer hat das mit Canvas und oder Shapes gemacht....also muss das ja irgendwie mit Canvas gehen...
|
Also direkt wirst du das wohl nich hinkriegen, dass du sagt, dsa ding soll sich auf der linie bewegen. Da müsstest irgendwas mit ner schleife und nem Timer machen.
|
wenn du das wirklich mit canvas machen musst, dann musst du so weit ich weiss alles neu zeichnen...
[Edit] ich hab mal n bischen rumexperimentiert:
Delphi-Quellcode:
[/EDIT]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } public X:Integer; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); //brauchst n timer begin x := x+1; self.Canvas.Pen.Color := self.Color; self.Canvas.Rectangle(0,0,self.Width,self.Height); self.Canvas.Pen.Color := clblack; self.Canvas.Ellipse(x+1,0,x+30,30); end; end. |
also wenn du das ohne OPenGL und DirectX machen willst und du deine Bildchen auf einer Linie bewegen willst, dann musst du die Koordinaten der Linie auf die Koordinaten des Bildchen übertragen. Das ganze musst du dann mit einem Timer machen.
Sind die Koordinaten der "Linie" bekannt? Und was ist das für eine "Linie"? eine einfach Gerade oder was? |
procedure erdbahn(rx,ry: integer);
var grad: integer; phi: real; begin xs:=breite div 2; ys:=breite div 2; for grad:=0 to 1800 do begin phi:=180/Pi*grad; x:=round(rx*cos(phi))+xs; y:=round(ry*sin(phi))+ys; form1.Canvas.Pixels[x,y]:=clgreen; end; end; So wird die Bahn erzeugt. Es handelt sich um eine Ellipse. Das Objekt soll auf der Bahn laufen..sieht dann so aus, wie Erde um die Sonne. |
:shock: Da hast du ja ganz schön was vor...da musst du mit parabeln und so arbeiten. das is nich einfach, zumindest für mich
Man liest sich, Stanlay |
|
Dein Beispiel is ja schön und gut. aber mit ner elipse is das was ganz anderes wie mit nem kreis. deine planeten drehen sich im kreis. er will die an einer elipse lang laufen lassen.
Man liest sich, Stanlay 8) |
Hallo,
stimmt. Das Beispiel ist auch gut. Das sind die Formeln für die Berechnung der Erdbahn:
Delphi-Quellcode:
Darin ist FSun.Width-40 der Radius. Die Kreisbahn ist hier ein Sonderfall!!! Und zwar genau der Sonderfall, wenn beide Radien gleich sind. Wenn die Radien unterschiedlich sind, bewegt sich die Erde auf einer Ellipse.
FXmoveEarth:=Xm+Round((FSun.Width-40)*sin(2*Pi*FTime/360));
FYmoveEarth:=Ym+Round((FSun.Width-40)*cos(2*Pi*FTime/360)); Das ganze geht auch noch weiter. Wenn Du in den Formeln unterschiedliche Frequenzen verwendest bewegt sich die Erde entlang einer Lissajou-Figur. |
Ne Lissaj... was?
Was isn das fürn ding? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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