X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNEL%2FInterpolationOptions.cxx;h=ebd37d1a1d533d4b06a2c4faa4bd55e7e9f2cec2;hb=be4c3bb042d5426fbbe54378b9d7b35173ab27ef;hp=cdfef798c11c2ff44f3f2f0ac866e12093917b67;hpb=f1a947b32a36d8dc8e3079b25305bb50e8cb59a0;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNEL/InterpolationOptions.cxx b/src/INTERP_KERNEL/InterpolationOptions.cxx index cdfef798c..ebd37d1a1 100644 --- a/src/INTERP_KERNEL/InterpolationOptions.cxx +++ b/src/INTERP_KERNEL/InterpolationOptions.cxx @@ -19,6 +19,7 @@ // Author : Anthony Geay (CEA/DEN) #include "InterpolationOptions.hxx" +#include "InterpKernelException.hxx" #include @@ -58,6 +59,10 @@ const char INTERP_KERNEL::InterpolationOptions::GEOMETRIC_INTERSECT2D_STR[]="Geo const char INTERP_KERNEL::InterpolationOptions::POINTLOCATOR_INTERSECT_STR[]="PointLocator"; +const char INTERP_KERNEL::InterpolationOptions::BARYCENTRIC_INTERSECT_STR[]="Barycentric"; + +const char INTERP_KERNEL::InterpolationOptions::BARYCENTRICGEO2D_INTERSECT_STR[]="BarycentricGeo2D"; + const char INTERP_KERNEL::InterpolationOptions::PLANAR_SPLIT_FACE_5_STR[]="PLANAR_FACE_5"; const char INTERP_KERNEL::InterpolationOptions::PLANAR_SPLIT_FACE_6_STR[]="PLANAR_FACE_6"; @@ -79,7 +84,6 @@ void INTERP_KERNEL::InterpolationOptions::init() _orientation=0; _measure_abs=true; _splitting_policy=PLANAR_FACE_5; - _P1P0_bary_method=false; } std::string INTERP_KERNEL::InterpolationOptions::getIntersectionTypeRepr() const @@ -92,6 +96,10 @@ std::string INTERP_KERNEL::InterpolationOptions::getIntersectionTypeRepr() const return std::string(GEOMETRIC_INTERSECT2D_STR); else if(_intersection_type==INTERP_KERNEL::PointLocator) return std::string(POINTLOCATOR_INTERSECT_STR); + else if(_intersection_type==INTERP_KERNEL::Barycentric) + return std::string(BARYCENTRIC_INTERSECT_STR); + else if(_intersection_type==INTERP_KERNEL::BarycentricGeo2D) + return std::string(BARYCENTRICGEO2D_INTERSECT_STR); else return std::string("UNKNOWN_INTERSECT_TYPE"); } @@ -178,6 +186,16 @@ bool INTERP_KERNEL::InterpolationOptions::setOptionString(const std::string& key setIntersectionType(INTERP_KERNEL::PointLocator); return true; } + else if(value==BARYCENTRIC_INTERSECT_STR) + { + setIntersectionType(INTERP_KERNEL::Barycentric); + return true; + } + else if(value==BARYCENTRICGEO2D_INTERSECT_STR) + { + setIntersectionType(INTERP_KERNEL::BarycentricGeo2D); + return true; + } } else if(key==SPLITTING_POLICY_STR) { @@ -223,9 +241,7 @@ std::string INTERP_KERNEL::InterpolationOptions::getSplittingPolicyRepr() const std::string INTERP_KERNEL::InterpolationOptions::filterInterpolationMethod(const std::string& meth) const { - if ( _P1P0_bary_method && meth == "P1P0" ) - return "P1P0Bary"; - return meth; + return std::string(meth); } bool INTERP_KERNEL::InterpolationOptions::setInterpolationOptions(long print_level, @@ -238,8 +254,7 @@ bool INTERP_KERNEL::InterpolationOptions::setInterpolationOptions(long print_lev double max_distance_for_3Dsurf_intersect, long orientation, bool measure_abs, - std::string splitting_policy, - bool P1P0_bary_method ) + std::string splitting_policy) { _print_level=print_level; _precision=precision; @@ -250,7 +265,6 @@ bool INTERP_KERNEL::InterpolationOptions::setInterpolationOptions(long print_lev _max_distance_for_3Dsurf_intersect=max_distance_for_3Dsurf_intersect; _orientation=orientation; _measure_abs=measure_abs; - _P1P0_bary_method=P1P0_bary_method; return(setOptionString(INTERSEC_TYPE_STR,intersection_type) && setOptionString(SPLITTING_POLICY_STR,splitting_policy)); } @@ -268,7 +282,22 @@ std::string INTERP_KERNEL::InterpolationOptions::printOptions() const oss << "Orientation : " << _orientation << std::endl; oss << "Measure abs : " << _measure_abs << std::endl; oss << "Splitting policy : " << getSplittingPolicyRepr() << std::endl; - oss << "P1P0 Barycentric method : " << _P1P0_bary_method << std::endl; oss << "****************************" << std::endl; return oss.str(); } + +void INTERP_KERNEL::InterpolationOptions::CheckAndSplitInterpolationMethod(const std::string& method, std::string& srcMeth, std::string& trgMeth) +{ + const int NB_OF_METH_MANAGED=4; + const char *METH_MANAGED[NB_OF_METH_MANAGED]={"P0P0","P0P1","P1P0","P1P1"}; + bool found=false; + for(int i=0;i