Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekt bewegen (https://www.delphipraxis.net/4953-objekt-bewegen.html)

Delphi-lerner 18. Mai 2003 13:39

Unser Infolehrer hat das mit Canvas und oder Shapes gemacht....also muss das ja irgendwie mit Canvas gehen...

Stanlay Hanks 18. Mai 2003 13:39

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.

Basic-Master 18. Mai 2003 13:43

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:
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.
[/EDIT]

Alexander 18. Mai 2003 13:49

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?

Delphi-lerner 18. Mai 2003 14:57

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.

Stanlay Hanks 18. Mai 2003 15:05

: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

Jens Schumann 18. Mai 2003 16:30

Hallo,
habe ich nicht zu diesem Thema neulich ein Beispiel gegeben ?
Beispiel

Stanlay Hanks 18. Mai 2003 16:45

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)

Jens Schumann 18. Mai 2003 17:07

Hallo,
stimmt. Das Beispiel ist auch gut.
Das sind die Formeln für die Berechnung der Erdbahn:
Delphi-Quellcode:
    FXmoveEarth:=Xm+Round((FSun.Width-40)*sin(2*Pi*FTime/360));
    FYmoveEarth:=Ym+Round((FSun.Width-40)*cos(2*Pi*FTime/360));
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.
Das ganze geht auch noch weiter. Wenn Du in den Formeln unterschiedliche Frequenzen verwendest bewegt sich die Erde entlang einer Lissajou-Figur.

Stanlay Hanks 18. Mai 2003 18:27

Ne Lissaj... was?
Was isn das fürn ding?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
Seite 2 von 2     12   

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