84        DLL_IMPORT_OR_EXPORT 
void getControlPoints(
double * controlPoints, 
bool reverseIAxis = 
false, 
bool reverseJAxis= 
false, 
bool reverseKAxis= 
false) 
const;
 
  124        DLL_IMPORT_OR_EXPORT 
void getControlPointParameters(
double * controlPointParameters, 
bool reverseIAxis = 
false, 
bool reverseJAxis= 
false, 
bool reverseKAxis= 
false) 
const;
 
  168        DLL_IMPORT_OR_EXPORT 
void getParametricLineKind(int16_t* pillarKind, 
bool reverseIAxis = 
false, 
bool reverseJAxis = 
false) 
const;
 
  189        DLL_IMPORT_OR_EXPORT 
void getParametersOfNodes(
double * parameters, 
bool reverseIAxis = 
false, 
bool reverseJAxis= 
false, 
bool reverseKAxis= 
false) 
const;
 
  259            gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, 
bool isRightHanded,
 
  260            double const * parameters, 
double const * controlPoints, 
double const * controlPointParameters, 
unsigned int controlPointMaxCountPerPillar, 
short const * pillarKind,
 
  261            EML2_NS::AbstractHdfProxy* proxy = 
nullptr, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr);
 
  308            gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind, 
bool isRightHanded,
 
  309            const std::string & parameters, 
const std::string & controlPoints, 
const std::string & controlPointParameters, 
unsigned int controlPointMaxCountPerPillar, 
const std::string & pillarKind, 
const std::string & definedPillars,
 
  310            EML2_NS::AbstractHdfProxy* proxy = 
nullptr, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr);
 
  378            gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, 
bool isRightHanded,
 
  379            double const * parameters, 
double const * controlPoints, 
double const * controlPointParameters, 
unsigned int controlPointMaxCountPerPillar, 
short const * pillarKind, EML2_NS::AbstractHdfProxy* proxy,
 
  380            uint64_t splitCoordinateLineCount, 
unsigned int const * pillarOfCoordinateLine,
 
  381            unsigned int const * splitCoordinateLineColumnCumulativeCount, 
unsigned int const * splitCoordinateLineColumns, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr) = 0;
 
  452            gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind, 
bool isRightHanded,
 
  453            const std::string & parameters, 
const std::string & controlPoints, 
const std::string & controlPointParameters, 
unsigned int controlPointMaxCountPerPillar, 
const std::string & pillarKind, 
const std::string & definedPillars, EML2_NS::AbstractHdfProxy* proxy,
 
  454            uint64_t splitCoordinateLineCount, 
const std::string & pillarOfCoordinateLine,
 
  455            const std::string & splitCoordinateLineColumnCumulativeCount, 
const std::string & splitCoordinateLineColumns, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr) = 0;
 
  521            double const * parameters, 
double const * controlPoints, 
double const * controlPointParameters, 
unsigned int controlPointCountPerPillar, 
short pillarKind, EML2_NS::AbstractHdfProxy* proxy,
 
  522            uint64_t splitCoordinateLineCount, 
unsigned int const * pillarOfCoordinateLine,
 
  523            unsigned int const * splitCoordinateLineColumnCumulativeCount, 
unsigned int const * splitCoordinateLineColumns, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr);
 
  588            gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind, 
bool isRightHanded,
 
  589            const std::string & parameters, 
const std::string & controlPoints, 
const std::string & controlPointParameters, 
unsigned int controlPointCountPerPillar, 
short pillarKind, EML2_NS::AbstractHdfProxy* proxy,
 
  590            uint64_t splitCoordinateLineCount, 
const std::string & pillarOfCoordinateLine,
 
  591            const std::string & splitCoordinateLineColumnCumulativeCount, 
const std::string & splitCoordinateLineColumns, EML2_NS::AbstractLocal3dCrs * localCrs = 
nullptr) = 0;
 
  599            const std::
string & guid, const std::
string & title,
 
  600            unsigned int iCount, 
unsigned int jCount, 
unsigned int kCount, 
bool* kGaps = 
nullptr, EML2_NS::AbstractHdfProxy* proxy = 
nullptr) :
 
  604            const std::string & guid, 
const std::string & title,
 
  605            unsigned int iCount, 
unsigned int jCount, 
unsigned int kCount, 
bool* kGaps = 
nullptr, EML2_NS::AbstractHdfProxy* proxy = 
nullptr) :
 
  611        IjkGridParametricRepresentation(gsoap_resqml2_0_1::_resqml20__IjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap) {}
 
  612        IjkGridParametricRepresentation(gsoap_eml2_3::_resqml22__IjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap) {}
 
  613        IjkGridParametricRepresentation(gsoap_resqml2_0_1::_resqml20__TruncatedIjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap) {}
 
  614        IjkGridParametricRepresentation(gsoap_eml2_3::_resqml22__TruncatedIjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap) {}
 
  619        gsoap_resqml2_0_1::resqml20__KDirection computeKDirection(
double const * controlPoints, 
unsigned int controlPointCountPerPillar, 
short const * pillarKind, EML2_NS::AbstractLocal3dCrs 
const * localCrs);
 
  621        void writeGeometryOnHdf(
double const * parameters,
 
  622            double const * controlPoints, 
double const * controlPointParameters, 
unsigned int controlPointCountPerPillar,
 
  623            uint64_t splitCoordinateLineCount, 
unsigned int const * pillarOfCoordinateLine,
 
  624            unsigned int const * splitCoordinateLineColumnCumulativeCount, 
unsigned int const * splitCoordinateLineColumns, EML2_NS::AbstractHdfProxy * proxy);
 
  626        virtual EML2_NS::AbstractHdfProxy* getParameterDatasetPath(std::string & datasetPathInExternalFile) 
const = 0;
 
  627        virtual EML2_NS::AbstractHdfProxy* getControlPointDatasetPath(std::string & datasetPathInExternalFile) 
const = 0;
 
  628        virtual EML2_NS::AbstractHdfProxy* getControlPointParametersDatasetPath(std::string & datasetPathInExternalFile) 
const = 0;
 
  629        virtual EML2_NS::AbstractHdfProxy* getParametersOfNodesDatasetPath(std::string & datasetPathInExternalFile) 
const = 0;
 
  630        virtual void getRawParametricLineKind(
short * pillarKind) 
const = 0;
 
  631        void getXyzPointsFromParametricPoints(
double * xyzPoints) 
const;
 
  641            BSpline(
const std::vector<double>& parametersAtControlPoint, 
const std::vector<double>& valuesAtControlPoint);
 
  642            ~BSpline() = 
default;
 
  644            double getValueFromParameter(
double param) 
const;
 
  645            void setParameterAndValueAtControlPoint(
const std::vector<double>& parametersAtControlPoint, 
const std::vector<double>& valuesAtControlPoint);
 
  649            void checkIfParametersIncreaseOrDecrease();
 
  650            std::size_t getSplineIndexFromParameter(
double param) 
const;
 
  652            bool areParametersIncreasing;
 
  655            std::vector<double> a;
 
  656            std::vector<double> b;
 
  657            std::vector<double> c;
 
  658            std::vector<double> d;
 
  659            std::vector<double> parameter; 
 
  662        class PillarInformation
 
  665            uint32_t maxControlPointCount = 0;
 
  666            uint32_t parametricLineCount = 0;
 
  667            uint64_t splitLineCount = 0;
 
  668            std::unique_ptr<double[]> controlPoints;
 
  669            std::unique_ptr<double[]> controlPointParameters;
 
  670            std::unique_ptr<int16_t[]> pillarKind;
 
  671            std::unique_ptr<uint32_t[]> pillarOfSplitCoordLines;
 
  672            std::vector< std::vector< BSpline > > splines;
 
  674            PillarInformation() {}
 
  681        void loadPillarInformation() 
const;
 
  683        void getXyzPointsAlongACoordinateLine(uint64_t pillarIndex, uint64_t coordLineIndex, uint64_t ijNodeCount, uint64_t kNodeCount, 
double const* parameters, 
double* xyzPoints) 
const;
 
  686        std::unique_ptr<PillarInformation> pillarInformation{ 
new PillarInformation() };