Stückweise lineare Funktionen in Scripts: Unterschied zwischen den Versionen

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche
imported>DrBlackError
Keine Bearbeitungszusammenfassung
 
(Updated from LOTUS Lexicon on 2025-01-21)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:Lexikon]]
{{ArticleMetadata
[[Category:Unvollständige Seiten]]
|author=Marcel Kuhnt
[[Category:Unformatierte Seiten]]
|created_date=2017-06-09T12:19:59+02:00
|modified_date=2017-06-09T12:19:59+02:00
|source_url=https://www.lotus-simulator.de/lexikon/index.php?entry/34-st%C3%BCckweise-lineare-funktionen-in-scripts/
}}
 
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.


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.
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:


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


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:
Konkret werden diese Schritte wie folgt durchgeführt:


 
 


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


 


`Testfunction: integer;`


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


Testfunction := LinFuncNew;
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!
 


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
Code
LinFuncAddPair(Testfunction, 2, 6);
LinFuncAddPair(Testfunction, 6, 5);
LinFuncAddPair(Testfunction, 7, 8);
LinFuncAddPair(Testfunction, 8, 2);


  1. [[https://www.lotus-simulator.de/lexikon/index.php?entry/34-st%C3%BCckweise-lineare-funktionen-in-scripts/#codeLine_1_4f754d|]]LinFuncAddPair(Testfunction, 2, 6);
  2. [[https://www.lotus-simulator.de/lexikon/index.php?entry/34-st%C3%BCckweise-lineare-funktionen-in-scripts/#codeLine_2_4f754d|]]LinFuncAddPair(Testfunction, 6, 5);
  3. [[https://www.lotus-simulator.de/lexikon/index.php?entry/34-st%C3%BCckweise-lineare-funktionen-in-scripts/#codeLine_3_4f754d|]]LinFuncAddPair(Testfunction, 7, 8);
  4. [[https://www.lotus-simulator.de/lexikon/index.php?entry/34-st%C3%BCckweise-lineare-funktionen-in-scripts/#codeLine_4_4f754d|]]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:
 


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
`Ergebnis := LinFuncGetValue(Testfunction, 4); // Ergebnis = 5.5`

Aktuelle Version vom 21. Januar 2025, 21:56 Uhr

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`