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.