VISU_ScalarMapPL::Update();
}
+
+static void SearchRange(vtkContourFilter* theContourFilter,
+ int theNbParts,
+ float theDelta,
+ float theRange[2])
+{
+ float aRange = theRange[0] - theDelta;
+ do{
+ theContourFilter->GenerateValues(theNbParts,theRange);
+ theContourFilter->Update();
+ static float EPS = 1.0E-3, INCREMENT = 3.0;
+ theRange[0] -= EPS*theDelta;
+ theDelta *= INCREMENT;
+ if(aRange > theRange[0]) break;
+ }while(!theContourFilter->GetOutput()->GetNumberOfPoints());
+}
+
+
void VISU_IsoSurfacesPL::SetMapScale(float theMapScale){
VISU_ScalarMapPL::SetMapScale(theMapScale);
- float aRange[2] = {GetMax() - theMapScale*(GetMax()-GetMin()), GetMax()};
+ float aDelta = GetMax()-GetMin();
+ float aRange[2] = {GetMax() - theMapScale*aDelta, GetMax()};
float aNewRange[2] = {aRange[0], aRange[1]};
+ ::SearchRange(myContourFilter,GetNbParts(),aDelta,aNewRange);
+ //myContourFilter->GenerateValues(GetNbParts(),aNewRange);
if(GetScaling() == VTK_SCALE_LOG10)
VISU_LookupTable::ComputeLogRange(aRange,aNewRange);
- myContourFilter->GenerateValues(GetNbParts(),aNewRange);
Modified();
}