Einzelnen Beitrag anzeigen

Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#7

AW: Canvas.Ellipse mit Timer parabelförmig "fliegen" lassen

  Alt 31. Aug 2011, 13:08
es gibt auch eine einfachere Möglichkeit, bei der man auf schwierige mathematische Funktionen verzichten kann:

Bin über das Steigungsdreieck drauf gekommen. Der X/Y-Wert soll sich folgender Maßen bei jedem aufruf des Timers verhalten:
der X-wert wird mit dem Winkel, der Y-Wert mit der Stärke vom Anfangspunkt(also hier das Kanonerohr) aus addiert. Also haben wir nun schon eine Gerade. Zieht man nun bei jedem timer-aufruf 1(oder eine beliebige zahl) vom Winkel ab entsteht eine Kurve, die einer Parabel sehr ähnelt!

Hier ist meine Timer procedure:
Delphi-Quellcode:
  if (Panzer.KugelX < Image1.Width) and (Panzer.KugelY < Image1.Height) then
  begin
  Panzer.HWinkel := Panzer.HWinkel -1; //Winkel wird immer kleiner bzw.
  Panzer.zeichne(Image1.Canvas); //procedure für den Panzer/Umgebung
  Panzer.feuer(Image1.Canvas); //procedure für die Kugel
  end
Ich habe außerdem beim setzen der Werte für das "Steigungsdreieck" beide Werte noch durch 10 geteilt, da es sonst zu steile Kurven sind:

Delphi-Quellcode:
procedure TPanzer.feuer(canv: TCanvas);
begin
  KugelX := KugelX + Round(self.FHPower / 10);
  KugelY := KugelY - Round(self.FHWinkel / 10);

  canv.Ellipse(KugelX-3,KugelY-3, KugelX+3,KugelY+3);
end;
  Mit Zitat antworten Zitat