diff --git a/csmapi.i b/csmapi.i index 40812d31408e8b97160f2e700740e6c4825b6ce2..7795a036db1820d77fc42629adfbc2c470d1d8dd 100644 --- a/csmapi.i +++ b/csmapi.i @@ -8,3 +8,4 @@ %include "geometricmodel.i" %include "rastergm.i" %include "plugin.i" +%include "settableellipsoid.i" diff --git a/fixture/model.cpp b/fixture/model.cpp index 15bc633c6e77f29b3c866b3fb7cb2eb8cce0e005..5de15b95efdfd10537bd456c8c54ecf9c06fa98c 100644 --- a/fixture/model.cpp +++ b/fixture/model.cpp @@ -482,4 +482,13 @@ std::vector<double> FixtureSensorModel::getCrossCovarianceMatrix( throw csm::Error(csm::Error::UNSUPPORTED_FUNCTION, "Unsupported function", "FixtureSensorModel::getCrossCovarianceMatrix"); -} \ No newline at end of file +} + +csm::Ellipsoid FixtureSensorModel::getEllipsoid() const { + return csm::Ellipsoid(m_majorAxis, m_minorAxis); +} + +void FixtureSensorModel::setEllipsoid(const csm::Ellipsoid &ellipsoid) { + m_majorAxis = ellipsoid.getSemiMajorRadius(); + m_minorAxis = ellipsoid.getSemiMinorRadius(); +} diff --git a/fixture/model.h b/fixture/model.h index 094fe73b9fda6c25e3a2acf23cfdae864db13ca6..9c73345752602201cf0f543fdf9dbc7e18ff1502 100644 --- a/fixture/model.h +++ b/fixture/model.h @@ -188,16 +188,21 @@ public: virtual std::string getModelState() const; virtual void replaceModelState(const std::string& argState); + + virtual csm::Ellipsoid getEllipsoid() const; + virtual void setEllipsoid(const csm:: Ellipsoid &ellipsoid); private: // This private form of the g2i method is used to ensure thread safety. virtual csm::ImageCoord groundToImage( - const csm::EcefCoord& groundPt, - const std::vector<double> &adjustments, - double desiredPrecision = 0.001, - double* achievedPrecision = NULL, - csm::WarningList* warnings = NULL) const; + const csm::EcefCoord& groundPt, + const std::vector<double> &adjustments, + double desiredPrecision = 0.001, + double* achievedPrecision = NULL, + csm::WarningList* warnings = NULL) const; + double m_minorAxis; + double m_majorAxis; }; #endif diff --git a/python/tests/test_model.py b/python/tests/test_model.py index 6522700e6308c529090bf990c799304a4f83aa65..2493fdbb20b593f3bb7a1247100d46aeb28c279e 100644 --- a/python/tests/test_model.py +++ b/python/tests/test_model.py @@ -57,4 +57,7 @@ def test_bad_ground_to_image(model): gnd_coord = csmapi.EcefCoord(-1, -1, 0) with pytest.warns(Warning) as w: img = model.groundToImage(gnd_coord, 0) - assert len(w) == 1 \ No newline at end of file + assert len(w) == 1 + +def test_ellipsoid_is_settable(model): + assert isinstance(csmapi.SettableEllipsoid.getEllipsoid(model), csmapi.Ellipsoid) diff --git a/settableellipsoid.i b/settableellipsoid.i new file mode 100644 index 0000000000000000000000000000000000000000..6714c47917e81f034f0bcebecce8e6040b0e4a9e --- /dev/null +++ b/settableellipsoid.i @@ -0,0 +1,6 @@ +%module(package="csmapi") settableellipsoid +%{ + #include "SettableEllipsoid.h" +%} + +%include "SettableEllipsoid.h"