Hello and happy new year to all

I’m working on my problem, and stuck at one point. First, i would like to check my manifold calculations with using orekit’s built-in Vector3D and TopocentricPoint classes. For this, i tried to reduced the problem to “planar geometry”, i.e. planar triangle.

Where satellite at A point, observer1 sits B and observer2 sits C.

a: linear distance between B and C (of course not geodetic)

b: satellite range to observer2

c: satellite range to observer1

Hereafter i’ll use numbers for to explain myself more clearly.

(numbers obtained from stellarium)

from org.orekit.frames import FramesFactory, TopocentricFrame

from org.orekit.bodies import OneAxisEllipsoid, GeodeticPoint

from org.orekit.time import AbsoluteDate

itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)

body = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS, Constants.WGS84_EARTH_FLATTENING, itrf)

lat1, lon1, alt1 = float(np.radians(39.919869)), float(np.radians(32.854272)), float(874)

topo1 = TopocentricFrame(body, GeodeticPoint(lat1, lon1, alt1), “observer1”)

lat2, lon2, alt2 = float(np.radians(36.908119)), float(np.radians(30.695561)), float(61)

topo2 = TopocentricFrame(body, GeodeticPoint(lat2, lon2, alt2), “observer2”)

date1 = AbsoluteDate(2023, 1, 3, 7, 0, 0.0, TimeScalesFactory.getUTC())

pos1 = topo1.getPVCoordinates(date1, topo2).position # topo1 pv coordinates at observation moment from topo2

pos2 = topo2.getPVCoordinates(date1, topo1).position # same but for topo2

a = np.sqrt((pos1.x**2) + (pos1.y**2) + (pos1.z**2)) # this is linear distance between B and C

#
observed vectors, vector_fromTo

#
angles are topocentric right ascension and declination values at observer#1 or #2

v_BA = Vector3D(282.8514167*np.pi/180, -5.927083*np.pi/180)

v_CA = Vector3D(283.2695416667*np.pi/180, -5.543694444*np.pi/180)

v_BC = pos2.normalize()

v_CB = pos1.normalize()

A = Vector3D.angle(v_BA, v_CA) * 180 / np.pi # parallax angle

B = Vector3D.angle(v_BA, v_BC) * 180 / np.pi

C = Vector3D.angle(v_CA, v_CB) * 180 / np.pi

but i never obtain A+B+C equal to 180 some trials give greater values, some are lesser.

for this example, it’s 181.01929…

perhaps it’s reason very simple, but i cannot find…