Prototyp und Beschreibung der Funktion gettransmolodensky() (Funktion der freischaltpflichtigen Gruppe "Transformationsparameter") |
gettransmolodensky() Berechnen von drei Molodensky-Parametern aus identischen Punkten in verschiedenen Bezugssystemen. Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!): extern "C" __declspec(dllimport) unsigned long __stdcall gettransmolodensky( double aCartQ[][3], double aCartZ[][3], unsigned long nCount, double aMolodensky[3]); Prototyp der DLL-Funktion in Visual Objects Syntax: _DLL function gettransmolodensky(; aCartQ as real8 ptr,; // 4 Byte aCartZ as real8 ptr,; // 4 Byte nCount as dword,; // 4 Byte aMolodensky as real8 ptr); // 4 Byte as logic pascal:geodll32.gettransmolodensky // 4 Byte Die Funktion berechnet drei Molodensky-Transformationsparameter aus identischen Punkten in verschiedenen Quell- und Ziel- Koordinatenbezugssysteme. Die identischen Punkte sind als Kartesische Koordinaten in Arrays gespeichert. Die Molodensky-Transformation ist eine Transformation für dreidimensionale kartesische Koordinaten. Sie enthält als Paramter drei Verschiebungsvektoren. Da die Funktion wegen der umfangreichen Berechnungen zeitintensiv ist, kann mit der Funktion seteventloop() die Event-Bearbeitung während der Berechnung durch Unterbrechung der Bearbeitungsschleife zugelassen werden. Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben: aCartQ[][3] Kartesische Koordinaten X, Y, Z des Quell-Koordinatenbezugs- (ref) systems in einem zweidimensionalen Array des Typs double. Die erste Dimension zählt die in nCount übergebene Anzahl der verfügbaren Kartesischen Koordinaten identischer Punkte im Quellsystem. Die zweite Dimension ist 3 für die X-, Y- und Z-Komponenten der Kartesischen Koordinaten des Quellsystems. Die Anzahl der Elemente in den Arrays aCartQ und aCartZ muss gleich sein. Der Aufbau des Arrays ist weiter unten beschrieben. aCartZ[][3] Kartesische Koordinaten X, Y, Z des Ziel-Koordinatenbezugs- (ref) systems in einem zweidimensionalen Array des Typs double. Die erste Dimension zählt die in nCount übergebene Anzahl der verfügbaren Kartesischen Koordinaten identischer Punkte im Zielsystem. Die zweite Dimension ist 3 für die X-, Y- und Z-Komponenten der Kartesischen Koordinaten des Zielsystems. Die Anzahl der Elemente in den Arrays aCartQ und aCartZ muss gleich sein. Der Aufbau des Arrays ist weiter unten beschrieben. nCount Anzahl der verfügbaren identischen Punkte, die als Kartesische Koordinaten in den Arrays aCartQ und aCartZ gespeichert sind. aMolodensky[3] Drei Molodensky-Parameter in einem Array mit 3 Elementen (ref out) des Typs double. 1. Arrayelement: Verschiebung auf der X-Achse [Meter] 2. Arrayelement: Verschiebung auf der Y-Achse [Meter] 3. Arrayelement: Verschiebung auf der Z-Achse [Meter] ---------------- | V1 | V2 | V3 | ---------------- Für das Array muss Speicherplatz in der Größe 3*sizeof(double) Bytes von der aufrufenden Routine zur Verfügung gestellt werden. returnWert Im Fehlerfall gibt die Funktion FALSE zurück, sonst TRUE. Die zweidimensionalen Arrays aCartQ[][3] und aCartZ[][3] sind mit Werten des Typs double gefüllt und folgendermaßen aufgebaut: ---------------------------------------------------------------------- | K1-X | K1-Y | K1-Z | K2-X | K2-Y | K2-Z | ... | Kn-X | Kn-Y | Kn-Z | ---------------------------------------------------------------------- mit K1 -› Kn: Koordinaten 1 bis n X: Kartesische X-Komponente Y: Kartesische Y-Komponente Z: Kartesische Z-Komponente Es müssen mindestens drei identische Punkte als Koordinatentripel für die Berechnung vorhanden sein. Freischaltung: Die Funktion ist Bestandteil der freischaltpflichtigen Funktionsgruppe "Transformationsparameter". Sie wird zusammen mit den anderen Funktionen der Gruppe durch die Eingabe der bei der Vertriebsfirma erworbenen Freischaltparameter per Aufruf der Funktion setunlockcode() zur uneingeschränkten Nutzung frei geschaltet. Ohne Freischaltung werden maximal 25 identische Punkte verarbeitet. |