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() };