![]() |
Flugbahn eines Geschosses darstellen
Hi,
weiss jemand, wie ich die Flugbahn eines Geschosses (auf Form) darstellen kann? Bekannt sind: * Ausgangskoordinaten * Zielkoordinaten * Steigung Problem: Steigung aus reellem Zahlenbereich... mfg devnull |
Re: Flugbahn eines Geschosses abfeuern
moin,
geht es dir um die Berechnung oder die Darstellung der Flugbahn? |
Re: Flugbahn eines Geschosses darstellen
Die Berechnung ist nicht das Problem, wohl aber die Darstellung...
Ich weis nicht, wie ich ein Bild (oder sowas ähnliches) verschieben soll, da die Steigung ja Kommazahl ist |
Re: Flugbahn eines Geschosses darstellen
Zitat:
|
Re: Flugbahn eines Geschosses darstellen
wenn du jeden punkt zeichen willst dann machste das halt mit canvas
wenn du ein objekt verschieben willst dann änderste halt jedes frame die position und stellst es dar.. ich weis halt net was du benutzen willst als darstellung und so weiter.. spezifiziere bitte dein problem // edit kommazahlen zu ganzzahlen convertieren geht mit round() |
Re: Flugbahn eines Geschosses darstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich runde und dabei aber mit Pixeln arbeite, bekomme ich bei größeren Pixelstrecken eine sehr große Abweichung...
Eigentlich ist es doch egal, ob ich ein Image oder ein Pixelkreuz verschiebe?! |
Re: Flugbahn eines Geschosses darstellen
du musst für deine berechnungen fließkommazahlen verwenden und NUR für das anzeigen via objekte positionieren runden !
|
Re: Flugbahn eines Geschosses darstellen
Nötigenfalls multiplizierst du deine Endwerte mit einem Vergrößerungsfaktor und rundest dann.
|
Re: Flugbahn eines Geschosses darstellen
So könnte es dann Aussehen: Parabel
Delphi-Quellcode:
Und immer dran denken 0/0 ist nicht links unten ( vergess ich bei Schaubildern immer und wunder mich dann warum mein Sinus irgendwie gesiegelt aussieht :mrgreen: )
image1.canvas.MoveTo(0,250); // links unten
for x:=0 to 500 do// von links bis rechts begin y:=(x-250)/15; // Nullstelle nach rechts verschoben und Parabel gedrückt y:=power(y,2); s:=round(y); image1.canvas.LineTo(x,s); end; |
Re: Flugbahn eines Geschosses darstellen
Ich hab da mal nen üblen Fehler gemacht: jetzt funkts...
Aufnahme der Ausgangs-, Zielposition in der OnMouseDown...
Delphi-Quellcode:
Timer: Flugbahn darstellen (lineare Fkt.: y=mx+c)
Schuss[i].XPos := Ship1.XPos;
Schuss[i].YPos := Ship1.YPos; Schuss[i].XStart := Ship1.XPos; Schuss[i].YStart := Ship1.YPos; Schuss[i].XZiel := x; Schuss[i].YZiel := y; // Berechnet Steigung (Steigung : real) Schuss[i].Steigung := (Schuss[i].YZiel-Ship1.YPos) / (Schuss[i].XZiel-Ship1.XPos);
Delphi-Quellcode:
Schuss[i].XPos := Schuss[i].XPos + 1; //Nur wenn Ziel rechts des Raumschiffs ist
Schuss[i].YPos := round(Schuss[i].Steigung*(Schuss[i].XPos-Schuss[i].XStart) + Schuss[i].YStart); mfg devnull |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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