Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit der Prozentrechnung (https://www.delphipraxis.net/52124-problem-mit-der-prozentrechnung.html)

Alex_ITA01 24. Aug 2005 08:20


Problem mit der Prozentrechnung
 
Guten Morgen erstmal,
sorry aber ich habe grade ein kleines Problem mit der Prozentrechnung...
Ich stehe heute Morgen noch ein wenig neben mir.
Also ich habe ein Wert (den ich bekomme) und dieser Wert gibt eine bestimmte Höhe an.
Jetzt möchte ich anhand der Höhe meine Grafik setzen (Height).
Das heißt, ich habe eine maximale Höhe von 3600mm und eine minimale Höhe von 1400mm.
3600mm entspricht ungefähr einer "Height" der Grafik von 77.
1400mm entspricht ungefähr einer "Height" der Grafik von 152.
Diese Werte habe ich im Designer herausbekommen.
Ich habe es bisher so gemacht:

Grafik.Height := 77 + (77 - Round((Hoehe * 77) / MaxHoehe));

Wenn ich als Höhe 3000 bekomme rechnet er mir auch richtig eine Height von 90 aus.
Aber wenn ich z.B. 1400 eingebe, rechnet er mir keine Height von 152 aus sondern von 124.

Könnt ihr mir bitte helfen?
MFG Alex

marabu 24. Aug 2005 08:41

Re: Problem mit der Prozentrechnung
 
Hallo Alex,

wenn du eine lineare Abbildung brauchst - die 77 und die 152 sind wohl vertauscht? - dann lautet die f(x) = ax + b, wobei x die Höhe in mm, f(x) die Höhe in pixel ist. Der Faktor a wird in pixel/mm angegeben und die Verschiebung b in pixel.

Code:
f(x) = a * x + b
a = (152 - 77) / (3600 - 1400)
b = 77
Warum ist bei dir f(3000) = 90?

Grüße vom marabu

DevilsCamp 24. Aug 2005 08:55

Re: Problem mit der Prozentrechnung
 
Zitat:

Zitat von marabu
die 77 und die 152 sind wohl vertauscht?

Bedenke, dass beim Monitor y nach unten geht, nicht nach oben ;)


Funktionieren sollte folgende Funktion:

Delphi-Quellcode:
NeuesY := 152-Round(75*(Hoehe-MinHoehe)/(MaxHoehe-MinHoehe));
Erklärung:

deine 1400mm entsprechen 0%, die 3600mm 100%.
Das ist eine Different von 2200. Dies sind nun deine neuen 100%, 0 dagegen 0% ;)

Enstprechend die Y-Werte: 152 entspr. 0%, 77 100%.
Different: 75 = 100%.

nun berechne ich, wieviel % deine neue Hoehe bzgl. der mm Angaben sind: (Hoehe-MinHoehe)/(MaxHoehe-MinHoehe)
Das Ergebnis ist eine Zahl zwischen 0 und 1. Multipliziert mit 75 ergibt das die neue Differenz zum Y-Betrag bei 0% (=YNeu)
Dies ziehst du nun von 152 ab und schon hast du dein neues Y (NeuesY = 152 - YNeu).


Hoffe, das hilft.

Alex_ITA01 24. Aug 2005 09:04

Re: Problem mit der Prozentrechnung
 
Das stellt eine Art Kran dar und er ist von oben nach unten "dehnbar".
Also wenn er ganz oben ist, hat er eine Höhe von 3600mm (vom BODEN gesehen) und damit eine Height von 77Pixeln (er ist zusammengezogen).
Wenn der Kran voll ausgefahren ist, hat er eine Höhe von 1400mm (über dem Boden) und damit eine Height von 152Pixeln.
Er ist sozusagen in der Top-Eigenschaft immer gleich nur die Height ändert sich Richtung Boden je nach Höhe.
Ich hatte mich vorhin anscheind komisch ausgedrückt.Sorry.
Ich hoffe ihr könnt mir irgendwie helfen...?!

MFG Alex

PS: Wenn er eine Höhe von 3000mm hat, ist die Height von 90Pixeln richtig :-)

Alex_ITA01 24. Aug 2005 09:11

Re: Problem mit der Prozentrechnung
 
NeuesY := 152-Round(75*(Hoehe-MinHoehe)/(MaxHoehe-MinHoehe));

Danke schön...
Hat super funktioniert

MFG Alex

PS: Hoffentlich ist mein Mathelehrer nicht hier in der DP :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr.

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