AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Eine Skala, die sich dem Bereich anpasst
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Skala, die sich dem Bereich anpasst

Ein Thema von Dipl Phys Ernst Winter · begonnen am 17. Mai 2009 · letzter Beitrag vom 25. Mai 2009
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Eine Skala, die sich dem Bereich anpasst

  Alt 24. Mai 2009, 16:32
Hallo,

Du könntest das Verfahren allgemeingültig machen, in dem Du Xa und Xe normierst, also auf Werte zwischen 0 und +9.99999 herunterrechnest. Nach der Ermittlung der geeigneten Skalierung rechnest Du die Ergebnisse einfach wieder zurück. Ein einfacher Ansatz würde so lauten, das man einen Faktor definiert, durch den man Xe und Xa teilt. Dieser Faktor würde sich an der 10er-Potenz von (Xe-Xa) sowie dem Vorzeichen orientieren.

Weiterhin sollte der gewünschte Abstand zwischen den Ticks nicht in Pixeln, sondern z.B. als Anzahl (23 bis 1025 mit idealerweise 10 Ticks) angegeben werden. Auch das dient der Allgemeingültigkeit. In meinen Anwendungen benötige ich i.A. keinen Pixelabstand, sondern eben diese Anzahl an Ticks.
Es wäre optimal, die XA und XE dahingehend zu korrigieren, das sie -entsprechend den Ticks- nach unten bzw. oben gerundet werden. Beispiel:
Xa=10, Xe = 900 mit 10 Ticks => Tickabstand = 100. Dann wäre XA' = 0 und XE'=1000.

Last, but not least zwei Anmerkungen zum Code:
1. Du verwendest globale Variablen, also wird das Verfahren von Anderen nicht ohne weiteres zu verwenden sein.
2. Du verwendest implizite Vorbedingungen, d.h. dein Verfahren arbeitet nur bei bestimmten Xa und Xe korrekt. Leider ist dies nicht dokumentiert, sondern ergibt sich zwangsweise durch die Formatierung der Eingabefelder.

Es wäre schön, wenn Du dein Verfahren in eine Routine kapseln könntest, deren Prozedurkopf so aussehen könnte:
Procedure BereichSkalieren (XAnfang, XEnde : Extended; AnzahlTicks : Integer; Var XAnfangKorrigiert, XEndeKorrigiert, XTickAbstand : Extended);
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 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