Stückweise lineare Funktionen in Scripts

Aus LOTUS Wiki DE
Version vom 18. Juli 2021, 17:23 Uhr von imported>DrBlackError
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche


Mit diesem sperrigen Begriff sind Funktions-Kurven gemeint, die vom Programmierer frei erstellt werden können. Definiert werden sie, indem (mindestens 2) X-Y-Paare (Punkte) definiert werden, die dann rechnerisch mit geraden Linien verbunden werden. An anderer Stelle treten solche Funktionen in LOTUS auch auf, z.B. als Volume-Kurven im Sound-Editor. Ein typisches Beispiel hierfür sind Motorkennlinien. Diese folgen nicht einer einzelnen mathematischen Formel, sondern müssen entsprechenden Diagrammen der Datenblätter nachempfunden werden.


Die Funktionen werden nach folgendem Prinzip angelegt:

Im Initialisierungs-Teil eine neue "Funktionshülle" definieren Im Initialisierungs-Teil der Funktion nacheinander Wertepaare hinzufügen Funktion an beliebiger Stelle verwenden Konkret werden diese Schritte wie folgt durchgeführt:


Zuerst muss eine globale Integer-Variable definiert werden, die zur Identifikation der Funktion dient:


Testfunction: integer;


Mit der Funktion LinFuncNew kann man nun im Initialisierungs-Teil eine neue Funktion anlegen:


Testfunction := LinFuncNew;


Dieser Funktion kann man nun mit mehrmaligem Aufruf von LinFuncAddPair(id, x, y) die nötigen Wertepaare übergeben. Die Reihenfolge ist wichtig! X muss stets größer werden!


Code LinFuncAddPair(Testfunction, 2, 6); LinFuncAddPair(Testfunction, 6, 5); LinFuncAddPair(Testfunction, 7, 8); LinFuncAddPair(Testfunction, 8, 2);


Schließlich kann man an jeder beliebigen Stelle (natürlich erst nach der Definition) die Funktion mit LinFuncGetValue(id, x) verwenden:


Ergebnis := LinFuncGetValue(Testfunction, 4); // Ergebnis = 5.5