pygeodesy 24.3.24__py2.py3-none-any.whl → 24.4.2__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pygeodesy/lazily.py CHANGED
@@ -284,7 +284,7 @@ _ALL_LAZY = _NamedEnum_RO(_name='_ALL_LAZY',
284
284
  'FrechetVincentys', 'Frechet6Tuple',
285
285
  'frechet_'),
286
286
  fstats=_i('Fcook', 'Flinear', 'Fwelford'),
287
- fsums=_i('Fsum', 'Fsum2Tuple', 'ResidualError',
287
+ fsums=_i('Fsum', 'DivMod2Tuple', 'Fsum2Tuple', 'ResidualError',
288
288
  'fsum', 'fsum_', 'fsumf_', 'fsum1', 'fsum1_', 'fsum1f_'),
289
289
  gars=_i('Garef', 'GARSError'),
290
290
  geodesicw=_i('Geodesic', 'GeodesicLine', 'Geodesic_WGS84'),
@@ -504,7 +504,7 @@ class _ALL_MODS(object):
504
504
  _ALL_MODS = _ALL_MODS() # PYCHOK singleton
505
505
 
506
506
  __all__ = _ALL_LAZY.lazily
507
- __version__ = '24.02.22'
507
+ __version__ = '24.03.29'
508
508
 
509
509
 
510
510
  def _ALL_OTHER(*objs):
pygeodesy/resections.py CHANGED
@@ -33,7 +33,7 @@ from pygeodesy.vector3d import _otherV3d, Vector3d
33
33
  from math import cos, atan2, degrees, fabs, radians, sin, sqrt
34
34
 
35
35
  __all__ = _ALL_LAZY.resections
36
- __version__ = '24.03.24'
36
+ __version__ = '24.03.26'
37
37
 
38
38
  _concyclic_ = 'concyclic'
39
39
  _PA_ = 'PA'
@@ -970,44 +970,43 @@ def wildberger3(a, b, c, alpha, beta, R3=min):
970
970
  def _s(x):
971
971
  return sin(x)**2
972
972
 
973
- def _vpa(r1, r3, q2, q3, s3):
974
- r = r1 * r3 * _4_0
975
- n = (r - _F1(r1, r3, -q2).fpow(2)).fover(s3)
976
- if n < 0 or isnear0(r):
973
+ def _vpa(r3, q2, q3, s2, s3):
974
+ r1 = s2 * q3 / s3
975
+ r = r1 * r3 * _4_0
976
+ n = (r - _F1(r1, r3, -q2)**2).fover(s3)
977
+ if n < 0 or r < EPS0:
977
978
  raise ValueError(_coincident_)
978
979
  return sqrt((n / r) * q3) if n else _0_0
979
980
 
980
981
  try:
981
- a, b, c, da, db = t = map1(float, a, b, c, alpha, beta)
982
- if min(t) < 0:
982
+ a, b, c, da, db = q = map1(float, a, b, c, alpha, beta)
983
+ if min(q) < 0:
983
984
  raise ValueError(_negative_)
984
985
 
985
- ra, rb = radians(da), radians(db)
986
- s1, s2, s3 = s = map1(_s, rb, ra, ra + rb) # rb, ra!
987
- if min(s) < EPS02:
988
- raise ValueError(_or(_coincident_, _colinear_))
989
-
990
986
  q1, q2, q3 = q = a**2, b**2, c**2
991
987
  if min(q) < EPS02:
992
988
  raise ValueError(_coincident_)
993
989
 
994
- r1 = s2 * q3 / s3 # s2!
995
- r2 = s1 * q3 / s3 # s1!
996
- Qs = _F1(*q) # == hypot2_(a, b, c)
997
- Ss = _F1(*s) # == fsum1(s)
998
- s += (Qs * _0_5), # tuple!
999
- C0 = Fdot(s, q1, q2, q3, -Ss)
1000
- r3 = C0.fover(-s3)
1001
- d0 = Qs.fpow(2).fsub_(hypot2_(*q) * _2_0).fmul(s1 * s2).fover(s3)
990
+ ra, rb = map1(radians, da, db)
991
+ s1, s2, s3 = s = map1(_s, rb, ra, ra + rb) # rb, ra!
992
+ if min(s) < EPS02:
993
+ raise ValueError(_or(_coincident_, _colinear_))
994
+
995
+ q4 = hypot2_(*q) * _2_0 # a**4 + ...
996
+ Qs = _F1(*q) # == hypot2_(a, b, c)
997
+ d0 = (Qs**2 - q4).fmul(s1 * s2).fover(s3)
998
+ if d0 < 0:
999
+ raise ValueError(_negative_)
1000
+ s += _F1(*s), # == fsum1(s),
1001
+ C0 = Fdot(s, q1, q2, q3, -Qs * _0_5)
1002
+ r3 = C0.fover(-s3) # C0 /= -s3
1002
1003
  if d0 > EPS02: # > c0
1003
1004
  _xcallable(R3=R3)
1004
1005
  d0 = sqrt(d0)
1005
1006
  r3 = R3(float(C0 + d0), float(C0 - d0)) # XXX min or max
1006
- elif d0 < 0:
1007
- raise ValueError(_negative_)
1008
1007
 
1009
- pa = _vpa(r1, r3, q2, q3, s3)
1010
- pb = _vpa(r2, r3, q1, q3, s3)
1008
+ pa = _vpa(r3, q2, q3, s2, s3)
1009
+ pb = _vpa(r3, q1, q3, s1, s3)
1011
1010
  pc = favg(_triSide2(b, pa, ra).a,
1012
1011
  _triSide2(a, pb, rb).a)
1013
1012
  return Survey3Tuple(pa, pb, pc, name=wildberger3.__name__)