Prototyp und Beschreibung der Funktion gettransresidualcoord() (Funktion der freischaltpflichtigen Gruppe "Transformationsparameter") |
gettransresidualcoord() Korrektur einer kartesischen Koordinate mit Hilfe der Restklaffenverteilung mittels Nachbarschafts-Interpolation. Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!): extern "C" __declspec(dllimport) unsigned long __stdcall gettransresidualcoord( double aCartP[][3], double aResid[][3], unsigned long nCount, double aCartQ[3], double aCartZ[3]); Prototyp der DLL-Funktion in Visual Objects Syntax: _DLL function gettransresidualcoord(; aCartP as real8 ptr,; // 4 Byte aResid as real8 ptr,; // 4 Byte nCount as dword,; // 4 Byte aCartQ as real8 ptr,; // 4 Byte aCartZ as real8 ptr); // 4 Byte as logic pascal:geodll32.gettransresidualcoord // 4 Byte Die Funktion korrigiert eine in aCartQ enthaltene kartesiche Koordinate mit Hilfe der in aCartP enthaltenen identischen Punkte des Zielbezugssystems und der in aResid enthaltenen Klaffungen. Die Korrektur wird mit Hilfe der Restklaffenverteilung mittels Nachbarschafts-Interpolation durchgeführt. Die Wichtung der Klaffungen nimmt mit der Entfernung der Punkte von der zu korrigierenden Koordinate im Quadrat ab. Das korrigierte Ergebnis wird als kartesische Koordinate in aCartZ zurückgegeben. Die Klaffungen müssen zuvor mit der Funktion gettransresiduals() berechnet werden. 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: aCartP[][3] Kartesische Koordinaten X, Y, Z des Ziel-Koordinatenbezugssystems (ref) 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 drei für die X-, Y- und Z-Komponenten der Kartesischen Koordinaten des Zielsystems. Die Anzahl der Elemente in den Arrays aCartP und aResid muss gleich sein. Der Aufbau des Arrays ist weiter unten beschrieben. aResid[][3] Zuvor ermittelte Klaffungen in einem zweidimensionalen Array des (ref) Typs double jeweils für die X-, Y- und Z-Komponente der Klaffungen in Meter. Der Aufbau des Arrays ist weiter unten beschrieben. nCount Anzahl der verfügbaren identischen Punkte des Ziel-Systems im Array aCartP und der Klaffungen im Arrray aResid. aCartQ[3] Kartesische Koordinate X, Y, Z, die korrigiert werden soll. In dem (ref) Array sind die drei X-, Y- und Z-Komponenten der zu korrigierenden kartesischen Koordinate enthalten. ------------- | X | Y | Z | ------------- aCartZ[3] Kartesische Koordinate X, Y, Z, die korrigiert worden ist. In das (ref out) Array werden die drei X-, Y- und Z-Komponenten der korrigierten kartesischen Koordinate eingetragen. Für das Array muss Speicherplatz der Größe 3*sizeof(double) Bytes von der aufrufenden Routine zur Verfügung gestellt werden. ------------- | X | Y | Z | ------------- returnWert Im Fehlerfall gibt die Funktion FALSE zurück, sonst TRUE. Die zweidimensionalen Arrays aCartP[][3] und aResid[][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 bzw. Klaffungen 1 bis n X: X-Komponente Y: Y-Komponente Z: Z-Komponente 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. |