#include "VTKViewer_GeometryFilter.h"
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+
#include <algorithm>
#include <vtkCell.h>
myCenters = vtkCellCenters::New();
myGeomFilter = VTKViewer_GeometryFilter::New();
myPointsFilter = VISU_MaskPointsFilter::New();
- myPercents = 0.3;
mySource = NULL;
+
+ myPercents = GetUsedPointsDefault();
}
size_t anIsPossible = CheckAvailableMemory(aSize);
if(!anIsPossible){
vtkFloatingPointType aMaxStepLength = std::max(GetMaxStepLength(theDataSet),thePropogationTime);
- vtkFloatingPointType aMinStepLength = GetMinStepLength(theDataSet);
+ vtkFloatingPointType aMinStepLength = GetMinStepLength(theDataSet,thePercents);
vtkFloatingPointType aDeltaStepLength = (aMaxStepLength - aMinStepLength)/aStepLengthIncrease;
for(int i = 2, aStepChanged = 1, aPerecentsChanged = 1; aStepChanged || aPerecentsChanged; i++){
vtkFloatingPointType aStepLength = theStepLength + aDeltaStepLength;
thePercents);
thePropogationTime = CorrectPropagationTime(thePropogationTime,
- aPointSet);
+ aPointSet,
+ thePercents);
theStepLength = CorrectStepLength(theStepLength,
- aPointSet);
+ aPointSet,
+ thePercents);
size_t anIsAccepted = FindPossibleParams(aPointSet,
theStepLength,
//----------------------------------------------------------------------------
size_t
VISU_StreamLinesPL
-::IsPossible(vtkPointSet* theDataSet,
- vtkFloatingPointType thePercents)
+::IsPossible(vtkPointSet* theDataSet)
{
- vtkFloatingPointType aStepLength = GetBaseStepLength(theDataSet);
+ vtkFloatingPointType aPercents = GetUsedPointsDefault();
+ vtkFloatingPointType aStepLength = GetBaseStepLength(theDataSet,
+ aPercents);
vtkFloatingPointType aBasePropTime = GetBasePropagationTime(theDataSet);
VISU_MaskPointsFilter *aPointsFilter = VISU_MaskPointsFilter::New();
aPointsFilter->SetInput(theDataSet);
size_t aRes = FindPossibleParams(aDataSet,
aStepLength,
aBasePropTime,
- thePercents);
+ aPercents);
aPointsFilter->Delete();
return aRes;
}
//----------------------------------------------------------------------------
vtkFloatingPointType
VISU_StreamLinesPL
-::GetMinPropagationTime(vtkDataSet* theDataSet)
+::GetMinPropagationTime(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents)
{
if(!theDataSet)
return -1.0;
- return GetMinStepLength(theDataSet);
+ return GetMinStepLength(theDataSet, thePercents);
}
VISU_StreamLinesPL
::GetMinPropagationTime()
{
- return GetMinPropagationTime(GetExtractorFilter()->GetOutput());
+ return GetMinPropagationTime(GetExtractorFilter()->GetOutput(), GetUsedPoints());
}
vtkFloatingPointType
VISU_StreamLinesPL
::CorrectPropagationTime(vtkFloatingPointType thePropagationTime,
- vtkDataSet* theDataSet)
+ vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents)
{
- vtkFloatingPointType aMinPropagationTime = GetMinPropagationTime(theDataSet);
+ vtkFloatingPointType aMinPropagationTime = GetMinPropagationTime(theDataSet, thePercents);
if(aMinPropagationTime > thePropagationTime)
thePropagationTime = aMinPropagationTime;
//----------------------------------------------------------------------------
vtkFloatingPointType
VISU_StreamLinesPL
-::GetMinStepLength(vtkDataSet* theDataSet)
+::GetMinStepLength(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents)
{
static vtkFloatingPointType aNbOfStepsOfIntStep = 1.0E+1;
- vtkFloatingPointType anIntStep = GetMinIntegrationStep(theDataSet);
+ vtkFloatingPointType anIntStep = GetMinIntegrationStep(theDataSet, thePercents);
vtkFloatingPointType aStepLength = anIntStep * aNbOfStepsOfIntStep / GetVelocityCoeff(theDataSet);
return aStepLength;
}
VISU_StreamLinesPL
::GetMinStepLength()
{
- return GetMinStepLength(GetExtractorFilter()->GetOutput());
+ return GetMinStepLength(GetExtractorFilter()->GetOutput(), GetUsedPoints());
}
vtkFloatingPointType
VISU_StreamLinesPL
::CorrectStepLength(vtkFloatingPointType theStep,
- vtkDataSet* theDataSet)
+ vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents)
{
- vtkFloatingPointType aMinStep = GetMinStepLength(theDataSet);
+ vtkFloatingPointType aMinStep = GetMinStepLength(theDataSet, thePercents);
if(theStep < aMinStep)
theStep = aMinStep;
//----------------------------------------------------------------------------
vtkFloatingPointType
VISU_StreamLinesPL
-::GetBaseStepLength(vtkDataSet* theDataSet)
+::GetBaseStepLength(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents)
{
static vtkFloatingPointType anAvgNbOfSteps = 1.0E+2;
vtkFloatingPointType aPropagationTime = GetBasePropagationTime(theDataSet);
vtkFloatingPointType aStepLength = aPropagationTime/anAvgNbOfSteps;
- aStepLength = CorrectStepLength(aStepLength,theDataSet);
+ aStepLength = CorrectStepLength(aStepLength,theDataSet,thePercents);
return aStepLength;
}
+//----------------------------------------------------------------------------
+vtkFloatingPointType
+VISU_StreamLinesPL
+::GetUsedPointsDefault()
+{
+ SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+ return aResourceMgr->doubleValue("VISU", "stream_lines_used_points", 0.01);
+}
+
+
//----------------------------------------------------------------------------
void
VISU_StreamLinesPL
Superclass::Init();
vtkDataSet* aDataSet = GetExtractorFilter()->GetOutput();
- vtkFloatingPointType anIntStep = GetBaseIntegrationStep(aDataSet);
+ vtkFloatingPointType anIntStep = GetBaseIntegrationStep(aDataSet, GetUsedPoints());
vtkFloatingPointType aPropagationTime = GetBasePropagationTime(aDataSet);
- vtkFloatingPointType aStepLength = GetBaseStepLength(aDataSet);
+ vtkFloatingPointType aStepLength = GetBaseStepLength(aDataSet, GetUsedPoints());
SetParams(anIntStep,
aPropagationTime,
- aStepLength);
+ aStepLength,
+ NULL,
+ GetUsedPoints());
}
SetParams(vtkFloatingPointType theIntStep,
vtkFloatingPointType thePropogationTime,
vtkFloatingPointType theStepLength,
- vtkPointSet* theSource = NULL,
- vtkFloatingPointType thePercents = 0.3,
+ vtkPointSet* theSource,
+ vtkFloatingPointType thePercents,
int theDirection = VTK_INTEGRATE_BOTH_DIRECTIONS);
virtual
static
vtkFloatingPointType
GetMinIntegrationStep(vtkDataSet* theDataSet,
- vtkFloatingPointType thePercents = 0.3);
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
GetBaseIntegrationStep(vtkDataSet* theDataSet,
- vtkFloatingPointType thePercents = 0.3);
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
- GetMinPropagationTime(vtkDataSet* theDataSet);
+ GetMinPropagationTime(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
static
vtkFloatingPointType
- GetMinStepLength(vtkDataSet* theDataSet);
+ GetMinStepLength(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
static
vtkFloatingPointType
- GetBaseStepLength(vtkDataSet* theDataSet);
-
+ GetBaseStepLength(vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents);
+
static
vtkFloatingPointType
GetVelocityCoeff(vtkDataSet* theDataSet);
static
size_t
- IsPossible(vtkPointSet* theDataSet,
- vtkFloatingPointType thePercents = 0.3);
+ IsPossible(vtkPointSet* theDataSet);
protected:
VISU_StreamLinesPL();
GetNecasseryMemorySize(vtkIdType theNbOfPoints,
vtkFloatingPointType theStepLength,
vtkFloatingPointType thePropogationTime,
- vtkFloatingPointType thePercents = 0.3);
+ vtkFloatingPointType thePercents);
static
size_t
vtkFloatingPointType
CorrectIntegrationStep(vtkFloatingPointType theStep,
vtkDataSet* theDataSet,
- vtkFloatingPointType thePercents = 0.3);
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
CorrectPropagationTime(vtkFloatingPointType thePropagationTime,
- vtkDataSet* theDataSet);
+ vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents);
static
vtkFloatingPointType
CorrectStepLength(vtkFloatingPointType theStep,
- vtkDataSet* theDataSet);
+ vtkDataSet* theDataSet,
+ vtkFloatingPointType thePercents);
+
+ static
+ vtkFloatingPointType
+ GetUsedPointsDefault();
vtkStreamLine* myStream;
vtkPointSet* mySource;
addPreference( tr( "Generate data table" ), cutLineGr, LightApp_Preferences::Bool, "VISU", "generate_data_table" );
addPreference( tr( "Generate curves" ), cutLineGr, LightApp_Preferences::Bool, "VISU", "generate_curves" );
+ // TAB: "StreamLines"
+ int streamLinesTab = addPreference( tr( "VISU_STREAM_LINES" ) );
+
+ // group: "StreamLines preferences"
+ int streamLinesGr = addPreference( tr( "VISU_STREAM_LINES_PREF" ), streamLinesTab );
+ setPreferenceProperty( cutLineGr, "columns", 1 );
+ int usedPoints = addPreference( tr( "VISU_STREAM_LINES_USED_POINTS" ), streamLinesGr,
+ LightApp_Preferences::DblSpin, "VISU", "stream_lines_used_points" );
+ setPreferenceProperty( usedPoints, "min", 0 );
+ setPreferenceProperty( usedPoints, "max", 1 );
+ setPreferenceProperty( usedPoints, "step", 0.1 );
+
// TAB: "Sweep, Animation, 3D Cache"
int animationTab = addPreference( tr( "Sweep, Animation" ) );
{