38 if (pillarInformation !=
nullptr)
39 delete pillarInformation;
87 DLL_IMPORT_OR_EXPORT
void getControlPoints(
double * controlPoints,
bool reverseIAxis =
false,
bool reverseJAxis=
false,
bool reverseKAxis=
false)
const;
127 DLL_IMPORT_OR_EXPORT
void getControlPointParameters(
double * controlPointParameters,
bool reverseIAxis =
false,
bool reverseJAxis=
false,
bool reverseKAxis=
false)
const;
171 DLL_IMPORT_OR_EXPORT
void getParametricLineKind(
short * pillarKind,
bool reverseIAxis =
false,
bool reverseJAxis=
false)
const;
192 DLL_IMPORT_OR_EXPORT
void getParametersOfNodes(
double * parameters,
bool reverseIAxis =
false,
bool reverseJAxis=
false,
bool reverseKAxis=
false)
const;
262 gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry,
bool isRightHanded,
263 double const * parameters,
double const * controlPoints,
double const * controlPointParameters,
unsigned int controlPointMaxCountPerPillar,
short const * pillarKind,
264 EML2_NS::AbstractHdfProxy* proxy =
nullptr, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr);
311 gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind,
bool isRightHanded,
312 const std::string & parameters,
const std::string & controlPoints,
const std::string & controlPointParameters,
unsigned int controlPointMaxCountPerPillar,
const std::string & pillarKind,
const std::string & definedPillars,
313 EML2_NS::AbstractHdfProxy* proxy =
nullptr, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr);
381 gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry,
bool isRightHanded,
382 double const * parameters,
double const * controlPoints,
double const * controlPointParameters,
unsigned int controlPointMaxCountPerPillar,
short const * pillarKind, EML2_NS::AbstractHdfProxy* proxy,
383 uint64_t splitCoordinateLineCount,
unsigned int const * pillarOfCoordinateLine,
384 unsigned int const * splitCoordinateLineColumnCumulativeCount,
unsigned int const * splitCoordinateLineColumns, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr) = 0;
455 gsoap_resqml2_0_1::resqml20__PillarShape mostComplexPillarGeometry, gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind,
bool isRightHanded,
456 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,
457 uint64_t splitCoordinateLineCount,
const std::string & pillarOfCoordinateLine,
458 const std::string & splitCoordinateLineColumnCumulativeCount,
const std::string & splitCoordinateLineColumns, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr) = 0;
524 double const * parameters,
double const * controlPoints,
double const * controlPointParameters,
unsigned int controlPointCountPerPillar,
short pillarKind, EML2_NS::AbstractHdfProxy* proxy,
525 uint64_t splitCoordinateLineCount,
unsigned int const * pillarOfCoordinateLine,
526 unsigned int const * splitCoordinateLineColumnCumulativeCount,
unsigned int const * splitCoordinateLineColumns, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr);
591 gsoap_resqml2_0_1::resqml20__KDirection kDirectionKind,
bool isRightHanded,
592 const std::string & parameters,
const std::string & controlPoints,
const std::string & controlPointParameters,
unsigned int controlPointCountPerPillar,
short pillarKind, EML2_NS::AbstractHdfProxy* proxy,
593 uint64_t splitCoordinateLineCount,
const std::string & pillarOfCoordinateLine,
594 const std::string & splitCoordinateLineColumnCumulativeCount,
const std::string & splitCoordinateLineColumns, RESQML2_NS::AbstractLocal3dCrs * localCrs =
nullptr) = 0;
602 const std::
string & guid, const std::
string & title,
603 unsigned int iCount,
unsigned int jCount,
unsigned int kCount,
bool* kGaps =
nullptr, EML2_NS::AbstractHdfProxy* proxy =
nullptr) :
607 const std::string & guid,
const std::string & title,
608 unsigned int iCount,
unsigned int jCount,
unsigned int kCount,
bool* kGaps =
nullptr, EML2_NS::AbstractHdfProxy* proxy =
nullptr) :
614 IjkGridParametricRepresentation(gsoap_resqml2_0_1::_resqml20__IjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap), pillarInformation(nullptr) {}
615 IjkGridParametricRepresentation(gsoap_eml2_3::_resqml22__IjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap), pillarInformation(nullptr) {}
616 IjkGridParametricRepresentation(gsoap_resqml2_0_1::_resqml20__TruncatedIjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap), pillarInformation(nullptr) {}
617 IjkGridParametricRepresentation(gsoap_eml2_3::_resqml22__TruncatedIjkGridRepresentation* fromGsoap) : AbstractIjkGridRepresentation(fromGsoap), pillarInformation(nullptr) {}
622 gsoap_resqml2_0_1::resqml20__KDirection computeKDirection(
double const * controlPoints,
unsigned int controlPointCountPerPillar,
short const * pillarKind, RESQML2_NS::AbstractLocal3dCrs
const * localCrs);
624 void writeGeometryOnHdf(
double const * parameters,
625 double const * controlPoints,
double const * controlPointParameters,
unsigned int controlPointCountPerPillar,
626 uint64_t splitCoordinateLineCount,
unsigned int const * pillarOfCoordinateLine,
627 unsigned int const * splitCoordinateLineColumnCumulativeCount,
unsigned int const * splitCoordinateLineColumns, EML2_NS::AbstractHdfProxy * proxy);
629 virtual EML2_NS::AbstractHdfProxy* getParameterDatasetPath(std::string & datasetPathInExternalFile)
const = 0;
630 virtual EML2_NS::AbstractHdfProxy* getControlPointDatasetPath(std::string & datasetPathInExternalFile)
const = 0;
631 virtual EML2_NS::AbstractHdfProxy* getControlPointParametersDatasetPath(std::string & datasetPathInExternalFile)
const = 0;
632 virtual EML2_NS::AbstractHdfProxy* getParametersOfNodesDatasetPath(std::string & datasetPathInExternalFile)
const = 0;
633 virtual void getRawParametricLineKind(
short * pillarKind)
const = 0;
634 void getXyzPointsFromParametricPoints(
double * xyzPoints)
const;
644 BSpline(
const std::vector<double> & parametersAtControlPoint,
const std::vector<double> & valuesAtControlPoint);
645 ~BSpline() =
default;
647 double getValueFromParameter(
double param)
const;
648 void setParameterAndValueAtControlPoint(
const std::vector<double> & parametersAtControlPoint,
const std::vector<double> & valuesAtControlPoint);
652 void checkIfParametersIncreaseOrDecrease();
653 std::size_t getSplineIndexFromParameter(
double param)
const;
655 bool areParametersIncreasing;
658 std::vector<double> a;
659 std::vector<double> b;
660 std::vector<double> c;
661 std::vector<double> d;
662 std::vector<double> parameter;
666 class PillarInformation
670 unsigned int maxControlPointCount;
671 unsigned int parametricLineCount;
672 uint64_t splitLineCount;
673 double * controlPoints;
674 double * controlPointParameters;
676 unsigned int* pillarOfSplitCoordLines;
677 std::vector< std::vector< BSpline > > splines;
679 PillarInformation() :maxControlPointCount(0), parametricLineCount(0), splitLineCount(0),
680 controlPoints(nullptr), controlPointParameters(nullptr), pillarKind(nullptr), pillarOfSplitCoordLines(nullptr) {}
682 ~PillarInformation() {
687 if (controlPoints !=
nullptr)
delete[] controlPoints;
688 if (controlPointParameters !=
nullptr)
delete[] controlPointParameters;
689 if (pillarKind !=
nullptr)
delete[] pillarKind;
690 if (pillarOfSplitCoordLines !=
nullptr)
delete[] pillarOfSplitCoordLines;
698 void loadPillarInformation(PillarInformation & pillarInfo)
const;
700 class PillarInformation* pillarInformation;