Balken abbilden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Balken abbilden

Beitrag von corado »

Hallo,
eigentlich ist es ganz einfach, aber ich hänge bei dieser Aufgabe jedesmal wenn ich es benötige :-(
Ich habe einen Balken...
Vollausschlag entsprich dem Wert 20
Ganz unten ist der Balken bei dem Wert 300

Und will ich Werte von 2-4 auf diesem Balken abbilden..als.
2 soll 300 entsprechen und
4 soll 20 entsprechen....*kopfkratz*

Code: Alles auswählen

 
Procedure TFT_16_Bit_Bars;
Var space : Byte; //Abstand einzelner Klötzchen
    BL_Start : Word; //Balkenlänge statisch oben
    BL_End,p   : Word; //Balkenlänge statisch unten
    BL         : Word; // Balkenlänge_Dynamisch
    testvalue : Real;
Begin
 space    := 22; //Abstand einzelner Klötzchen
 BL_Start := 20; //Balkenlänge statisch oben
 BL_End   := 300; //Balkenlänge statisch unten
 BL        := 20; // Balkenlänge Dynamisch
 testvalue := 3.0;       //76,7
         BL:= 320-(testvalue*80);
 
    // ******** Balken 1 *******
   TFT_16bit_Set_Brush(1, 1, 1, LEFT_TO_RIGHT_16bit, CL_lime_16bit, CL_white_16bit);
   For p:=300  DownTo BL DO   //downTo Ausschlag nach oben
          Begin
          IF p mod space = 0 THEN TFT_16bit_Rectangle(0, p, 20, p+20);
         // delay_ms(5);
          end;
        TFT_16bit_Set_Brush(1, 1, 1, LEFT_TO_RIGHT_16bit, CL_red_16bit, CL_WHITE_16bit);
         For p:=BL_Start  To BL DO
          Begin
          IF p mod space = 0 THEN TFT_16bit_Rectangle(0, p, 20, p+20);
          end;
end;
Zuletzt geändert von Lori am Do 17. Apr 2014, 14:14, insgesamt 1-mal geändert.
Grund: richtiger Highlighter

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Balken abbilden

Beitrag von corado »

na endlich..die Lösung

BL:= 300-((testvalue-2.5)*230);

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Balken abbilden

Beitrag von corpsman »

Ich mache das immer mit dieser Routine :)

Code: Alles auswählen

 
(* 
 *      vmin / rmin               vmax / rmax
 *       |                                |
 *    ---------------------------------------
 *                  |
 *                 v / result
 *
 * Berechnet den Wert von result so, dass er an der entsprechEnd 
 * gleichen Stelle in rmin / rmax liegt, wie  v in vmin / vmax ist.
 *)
 
Function convert_dimension(vmin, vmax, v: Single; rmin, rmax: integer): integer;
Begin
  If (vmax - vmin = 0) Then Begin // Div by 0 abfangen
    result := rmin;
    exit;
  End
  Else Begin
    result := round((((v - vmin) * (rmax - rmin)) / (vmax - vmin)) + rmin);
  End;
End;
--
Just try it

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Balken abbilden

Beitrag von Christian »

Ist der Dreisatz nicht irgendwie Mathe 3. Klasse oder sowas ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

corado
Beiträge: 48
Registriert: Mi 7. Aug 2013, 17:00

Re: Balken abbilden

Beitrag von corado »

ab 6/7 Klasse.
Habe ich nächstes jahr

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Balken abbilden

Beitrag von Christian »

W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Balken abbilden

Beitrag von corpsman »

Übrigens ist das kein klassischer Dreisatz.

In meinem Beispiel ist er das nur wenn entweder vim oder vmax = 0 und rmin oder rmax = 0.

Mit der Routine

Code: Alles auswählen

Function convert_dimension(vmin, vmax, v: Single; rmin, rmax: integer): integer;
Kannst du z.B. sagen :

1 entspricht 60
5 entspricht 100
und damit Berechnen, dass 4,44 = 94

Setze ich mittels Dreisatz

1/60 = 4,44 / X ergibt sich x = 264 weil der Strahlensatz davon ausgeht dass die Geraden sich im Ursprung schneiden.
--
Just try it

Antworten