Guten Morgen Micha,
mein funktionaler Ansatz ist, das jeder Standpunkt ein Koordinatensystem repräsentiert. Durch Koordinatentransformation kann ein Punkt aus dem übergeordnetem System (common = c) in jedes Standpunktsystem (station = s) transformiert werden:
Ps = T * Pc
mit
Ps: xyz im lokalen Standpunktsystem
Pc: xyz im übergeordnetem System
T: homogene Transformationsmatrix als Funktion von 3 Rotationswinkeln und 3 Translationen (und optionale weitere Parameter wie Maßstäbe etc.)
Die Unbekannten der Ausgleichung sind jetzt die Transformationsparameter je Standpunkt und die xyz Koordinaten der Punkte. Eine Besonderheit ist bei diesem Ansatz, dass die Standpunktkoordinaten durch die Translationen der Transformationsmatrizen repräsentiert werden.
Die Verbesserungsgleichungen für 3D Strecke, „Horizontal“ und „Vertikal“ Winkel können durch entsprechende Transformationen und Gleichungen dargestellt werden. In der Ausgleichung können dann wahlweise einzelne Unbekannte ausgeschaltet werden, für eine klassische Netzausgleichung mit horizontierten Standpunkten zb. rx und ry, es verbleibt dann rz, was der Orientierungsunbekannten entspricht.
Bei dem gewählten Ansatz muss in den Bedingungsgleichungen unterschieden werden zwischen Standpunkten und Punkten, die kein Standpunkt sind. Wie schon erwähnt ergeben sich die Standpunktkoordinaten ja innerhalb der Transformationsmatrizen durch die Translation. Diese liegt dadurch aber im Koordinatensystem des Standpunktes vor; bei den entsprechenden Koeffizienten für die Bedingungsgleichung berücksichtige ich das entsprechend. (möglicherweise habe ich hier auch einen Fehler gemacht, ich habe es aber schon 100 mal kontrolliert..)
Die Standpunktkoordinaten im übergeordneten common System ergeben sich durch Inversion der Transformationsmatrix. Die Standardabweichungen durch entsprechende Fehlerfortpflanzung.
Leider aber funktioniert es am Ende nicht, mein Berechnungsprozess iteriert nur, wenn ich in den Bedingungsgleichungen die Parameter für die Standpunkte und Punkte auf Null setze und für r = Orientierungsunbekannte eine 1 setze. Und dann weichen meine Standardabweichungen von denen mit Jag3D berechneten ab (jetzt auch nicht gravierend, aber dennoch nennenswert).
Gruß Frank