Skip to content

Commit a7e1d93

Browse files
committed
ellipsoid more optional args
1 parent 7e24a35 commit a7e1d93

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

src/pymap3d/ellipsoid.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,14 @@ class Ellipsoid:
6969
models = field(default_factory=Dict[str, Model])
7070

7171
def __init__(
72-
self, semimajor_axis: float, semiminor_axis: float, name: str = "", model: str = ""
72+
self,
73+
semimajor_axis: float,
74+
semiminor_axis: float,
75+
name: str = "",
76+
model: str = "",
77+
flattening: float | None = None,
78+
thirdflattening: float | None = None,
79+
eccentricity: float | None = None,
7380
):
7481
"""
7582
Ellipsoidal model of world
@@ -86,10 +93,25 @@ def __init__(
8693
Short name for the ellipsoid
8794
"""
8895

89-
self.flattening = (semimajor_axis - semiminor_axis) / semimajor_axis
96+
self.flattening = (
97+
flattening
98+
if flattening is not None
99+
else (semimajor_axis - semiminor_axis) / semimajor_axis
100+
)
101+
90102
assert self.flattening >= 0, "flattening must be >= 0"
91-
self.thirdflattening = (semimajor_axis - semiminor_axis) / (semimajor_axis + semiminor_axis)
92-
self.eccentricity = sqrt(2 * self.flattening - self.flattening**2)
103+
104+
self.thirdflattening = (
105+
thirdflattening
106+
if thirdflattening is not None
107+
else (semimajor_axis - semiminor_axis) / (semimajor_axis + semiminor_axis)
108+
)
109+
110+
self.eccentricity = (
111+
eccentricity
112+
if eccentricity is not None
113+
else sqrt(2 * self.flattening - self.flattening**2)
114+
)
93115

94116
self.name = name
95117
self.model = model

0 commit comments

Comments
 (0)