Stückweise lineare Funktionen in Scripts

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche

Vorlage:ArticleMetadata

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

 1. [[1]]LinFuncAddPair(Testfunction, 2, 6);
 2. [[2]]LinFuncAddPair(Testfunction, 6, 5);
 3. [[3]]LinFuncAddPair(Testfunction, 7, 8);
 4. [[4]]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`