Koordinatentransformation (Geodäsie/Vermessung)

Kai Westermann @, Thursday, 03.02.2011, 19:13 (vor 4831 Tagen) @ Kai Westermann

Zu früh gefreut............
Bei einem Tool klappt's, beim anderen nicht.
Nun habe ich der Möglichkeiten viele.

Für die Rotationen, habe ich von den Raumpunktdrehungen die Tooldrehungen abgezogen:

Rx = Rx1-Rx32
Ry = Ry1-Ry32
Ry = Ry1-Ry32

Dann habe ich die Rotationsmatrix aus dem File von Mordwinzew kopiert.
Dann multipliziere ich die Toolverschiebung von Tool 1 mit der Rotationsmatrix
und erhalte eine andere Verschiebung.
Diese subtrahiere ich von den X,Y,Z-Werten von Tool 1 und erhalte die Raumpunkte von Tool32.

Als ich das gleiche jedoch an Tool 2 probiere, kommen völlig andere Werte heraus.

Also stimmt entweder meine Rotationsmatrix nicht,
oder ich verwende nicht die richtige Rechenoperation für die Verknüpfung der
Rotationswinkel, weil die Beträge von Rx,Ry und Rz stimmen, nicht aber die Vorzeichen.

Das ist der VBA-Code der Umrechnung:

 
X = Left(DAT_Array(j, 6), Len(DAT_Array(j, 6)) - 2)
Y = Left(DAT_Array(j, 7), Len(DAT_Array(j, 7)) - 2)
Z = Left(DAT_Array(j, 8), Len(DAT_Array(j, 8)) - 2)
A = (Left(DAT_Array(j, 9), Len(DAT_Array(j, 9)) - 2)) * -3.1415927 / 180
B = (Left(DAT_Array(j, 10), Len(DAT_Array(j, 10)) - 2)) * -3.1415927 / 180
C = (Left(DAT_Array(j, 11), Len(DAT_Array(j, 11)) - 2)) * -3.1415927 / 180
Tool = Left(DAT_Array(j + 1, 6), Len(DAT_Array(j + 1, 6)) - 8)
 
                Cells(1, 8) = Cos(B) * Cos(A)
                Cells(2, 8) = Cos(C) * Sin(A) + Sin(C) * Sin(B) * Cos(A)
                Cells(3, 8) = Sin(C) * Sin(A) - Cos(C) * Sin(B) * Cos(A)
                Cells(1, 9) = Cos(B) * Sin(A)
                Cells(2, 9) = Cos(C) * Cos(A) - Sin(C) * Sin(B) * Sin(A)
                Cells(3, 9) = Sin(C) * Cos(A) + Cos(C) * Sin(B) * Sin(A)
                Cells(1, 10) = Sin(B)
                Cells(2, 10) = Sin(C) * Cos(B)
                Cells(3, 10) = Cos(C) * Cos(B)
 
                Cells(5, 8) = dX(Tool)
                Cells(5, 9) = dY(Tool)
                Cells(5, 10) = dZ(Tool)
 
                Range(Cells(7, 8), Cells(7, 10)).Select
                Selection.FormulaArray = "=MMULT(R[-2]C:R[-2]C[2],R[-6]C:R[-4]C[2])"
 

Wobei hier wieder A=Rz, B=Ry und C=Rx.


gesamter Thread:

 RSS-Feed dieser Diskussion