diff --git a/Device/Coord/ICoordSystem.cpp b/Device/Coord/ICoordSystem.cpp index 02febf1bd25d3b5cc8e9621d0c68c788d4a9513d..e0d3500fe176a43a0a39414bdb5ee1b9b45242ef 100644 --- a/Device/Coord/ICoordSystem.cpp +++ b/Device/Coord/ICoordSystem.cpp @@ -18,13 +18,17 @@ ICoordSystem::~ICoordSystem() = default; -std::unique_ptr<Powerfield<double>> ICoordSystem::createPowerfield(Coords units) const +std::vector<IAxis*> ICoordSystem::convertedAxes(Coords units) const { - std::vector<IAxis*> axes; + std::vector<IAxis*> ret; for (size_t i = 0; i < rank(); ++i) - axes.emplace_back(createConvertedAxis(i, units)); + ret.emplace_back(createConvertedAxis(i, units)); + return ret; +} - std::unique_ptr<Powerfield<double>> result(new Powerfield<double>(axes)); +std::unique_ptr<Powerfield<double>> ICoordSystem::createPowerfield(Coords units) const +{ + std::unique_ptr<Powerfield<double>> result(new Powerfield<double>(convertedAxes(units))); result->setAllTo(0.0); return result; } diff --git a/Device/Coord/ICoordSystem.h b/Device/Coord/ICoordSystem.h index a3857d218b8f32c91eb9d41df43634334b5f2709..3dfa4ebdab5243019ad9c28dbf18ed994d52a0ee 100644 --- a/Device/Coord/ICoordSystem.h +++ b/Device/Coord/ICoordSystem.h @@ -60,6 +60,8 @@ public: virtual IAxis* createConvertedAxis(size_t i_axis, Coords units) const = 0; + std::vector<IAxis*> convertedAxes(Coords units) const; + //! Creates Powerfield array in converter units. virtual Powerfield<double>* createConvertedData(const Powerfield<double>& data, Coords units) const; diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i index cbdf7def5c1c0b9e784ab1fe10c35fc0ccd23cbe..20acc3ac5719e42b41d1f6d47121262ce79c0c8e 100644 --- a/auto/Wrap/doxygenDevice.i +++ b/auto/Wrap/doxygenDevice.i @@ -905,6 +905,9 @@ Returns zero-valued output data array in specified units. %feature("docstring") ICoordSystem::createConvertedAxis "virtual IAxis* ICoordSystem::createConvertedAxis(size_t i_axis, Coords units) const =0 "; +%feature("docstring") ICoordSystem::convertedAxes "std::vector< IAxis * > ICoordSystem::convertedAxes(Coords units) const +"; + %feature("docstring") ICoordSystem::createConvertedData "Powerfield< double > * ICoordSystem::createConvertedData(const Powerfield< double > &data, Coords units) const Creates Powerfield array in converter units.