Thema: Delphi Darstellung im Maßstab

Einzelnen Beitrag anzeigen

rajuneon
(Gast)

n/a Beiträge
 
#1

Darstellung im Maßstab

  Alt 12. Mär 2009, 14:04
Hallo!

Ich habe ein Problem, an dem ich mir jetzt schon seit 2h die Zähne ausbeiße und nicht mal die Formulierung des Threadtitels ist einfach! Der Name passt nicht, aber ich weiß keinen besseren.

Also:

Ich habe einen Timer, in dem die x- und y-Koordinaten eines schiefen Wurfes berechnet werden.
Die Paintbox, in der ich das Ganze (durch lineto im timer) darstelle, ist 601 Pixel breit. Ich habe einen Faktor eingebaut, der es mir erlaubt, den Maßstab zu regulieren, also wenn der Faktor (von mir Darstellungsfaktor genannt) 1 ist, entspricht ein Pixel einem Meter, ist er 20, entsprechen 20 Pixel einem Meter. W ist die Wurfweite.

Delphi-Quellcode:
Timer1Timer.....

if W < 601 then
begin
  xx := round(x * darstfaktor);
  yy := round(y * darstfaktor);
end;

PaintBox1.Canvas.LineTo(xx,yy*(-1){Weil es ja eine umgekehrte Parabel ist} + 597{Paintbox-Höhe}); {Wurfparabel wird während des Wurfes gezeichnet}
Wenn nun aber schon die Wurfweite größer als 601m ist, reicht es ja nicht, den Darstellungsfaktor auf 1 zu setzen, um alles darzustellen. Ich will aber alles darstellen =)

Darum habe ich mir ausgedacht, doch einfach den x- bzw. y-Wert solange durch 2 zu teilen, bis es zur Gänze dargestellt werden kann.

Delphi-Quellcode:
 {auch im Timer}
if W > 601 then
begin
  darstfaktor := 1;
  repeat
    xx := round(x / 2);
    yy := round(y / 2);
  until W < 601;
end;
War wohl irgendwie falsch ausgedacht -.- Der ganze Mist geht nicht.
Ein bischen Hilfe wäre sehr nett! Hab auch nichts dagegen, das komplett anders zu machen!

Vielen Dank im Voraus!!!
  Mit Zitat antworten Zitat