inline Visualization::Abstract::Element* SeededSliceExtractor<DataSetWrapperParam>::createElement( Visualization::Abstract::Parameters* extractParameters) { /* Get proper pointer to parameter object: */ Parameters* myParameters=dynamic_cast<Parameters*>(extractParameters); if(myParameters==0) Misc::throwStdErr("SeededSliceExtractor::createElement: Mismatching parameter object type"); int svi=myParameters->scalarVariableIndex; /* Create a new slice visualization element: */ Slice* result=new Slice(myParameters,getVariableManager()->getColorMap(svi),getPipe()); /* Update the slice extractor: */ sle.update(getDs(getVariableManager()->getDataSetByScalarVariable(svi)),getSe(getVariableManager()->getScalarExtractor(svi))); /* Extract the slice into the visualization element: */ sle.startSeededSlice(myParameters->dsl,myParameters->plane,result->getSurface()); ElementSizeLimit<Slice> esl(*result,~size_t(0)); sle.continueSeededSlice(esl); sle.finishSeededSlice(); /* Return the result: */ return result; }
/** * Calculate the integral of (vector) dot dl over the length of the field line */ const std::vector<float>& Fieldline::integrateVector() { // std::cout<<"entered integrateVector()\n"; float integrand = 0.0; vectorIntegral.push_back(integrand); if (elements.size() == 0) { getDs(); } if ((elements.size() != 0) && (vectorValues.size() == elements.size()+1)) { // std::cout<<"integrating vectors along fieldline. Number of elements:"<<elements.size()<<"\n"; for (int i = 0; i < elements.size(); i++) { Point3f vAverage = (vectorValues[i] + vectorValues[i+1])*.5; integrand += elements[i].component1 * vAverage.component1 + elements[i].component2 * vAverage.component2 + elements[i].component3 * vAverage.component3; vectorIntegral.push_back(integrand); } // std::cout<<"done with vector integration.\n"; } else{ std::cout<<"vectors and elements don't match; elements must be 1 less than vectors\n" << "size of elements:" << elements.size() << "vectors:"<< vectorValues.size() << std::endl; } return vectorIntegral; }
inline DataSetRenderer<DataSetWrapperParam>::DataSetRenderer( const Visualization::Abstract::DataSet* sDataSet) :dsr(getDs(sDataSet)), displayVersion(1) { }
inline SeededSliceExtractor<DataSetWrapperParam>::SeededSliceExtractor( Visualization::Abstract::VariableManager* sVariableManager, Comm::MulticastPipe* sPipe) :Abstract::Algorithm(sVariableManager,sPipe), parameters(getVariableManager()->getCurrentScalarVariable()), sle(getDs(sVariableManager->getDataSetByScalarVariable(parameters.scalarVariableIndex)),getSe(sVariableManager->getScalarExtractor(parameters.scalarVariableIndex))), currentSlice(0) { }
/** * Measure the length of the field line up to point i */ const std::vector<float>& Fieldline::measure() { int size = this->positions.size(); if (elements.size() == 0) { getDs(); //sets elementsMagnitudes } length.push_back(0); for (int i = 0; i < size-1; i++) { length.push_back(elementsMagnitudes[i]+length[i]); } return length; }
inline SeededIsosurfaceExtractor<DataSetWrapperParam>::SeededIsosurfaceExtractor( const GLColorMap* sColorMap, const Visualization::Abstract::DataSet* sDataSet, const Visualization::Abstract::ScalarExtractor* sScalarExtractor, Comm::MulticastPipe* sPipe) :Abstract::Algorithm(sPipe), colorMap(sColorMap), ise(getDs(sDataSet),getSe(sScalarExtractor)), maxNumTriangles(500000), currentIsosurface(0), maxNumTrianglesValue(0),maxNumTrianglesSlider(0), extractionModeBox(0),currentValue(0) { }
/** * Calculate the integral of ds*values over the length of the field line */ const std::vector<float>& Fieldline::integrate() { int size = this->positions.size(); if (elements.size() == 0) { getDs(); } // length.push_back(0); integral.push_back(0); // First get the curve elements ds for (int i = 0; i < size-1; i++) { /** * Integration uses trapezoidal rule: multiplies the element * lengths by the average of the data on either side of the segment */ integral.push_back(elementsMagnitudes[i]*(values[i]+values[i+1])/2+integral[i]); } return integral; }
inline MultiStreamlineExtractor<DataSetWrapperParam>::MultiStreamlineExtractor( const GLColorMap* sColorMap, const Visualization::Abstract::DataSet* sDataSet, const Visualization::Abstract::VectorExtractor* sVectorExtractor, const Visualization::Abstract::ScalarExtractor* sScalarExtractor, Visualization::Abstract::DataSet::Scalar sDiskRadius, Comm::MulticastPipe* sPipe) :Abstract::Algorithm(sPipe), colorMap(sColorMap), msle(getDs(sDataSet),getVe(sVectorExtractor),getSe(sScalarExtractor)), diskRadius(sDiskRadius), maxNumVertices(20000), currentStreamline(0), numStreamlinesValue(0),numStreamlinesSlider(0), diskRadiusValue(0),diskRadiusSlider(0), epsilonValue(0),epsilonSlider(0), maxNumVerticesValue(0),maxNumVerticesSlider(0) { msle.setNumStreamlines(8); }
inline Visualization::Abstract::Element* SeededSliceExtractor<DataSetWrapperParam>::startElement( Visualization::Abstract::Parameters* extractParameters) { /* Get proper pointer to parameter object: */ Parameters* myParameters=dynamic_cast<Parameters*>(extractParameters); if(myParameters==0) Misc::throwStdErr("SeededSliceExtractor::startElement: Mismatching parameter object type"); int svi=myParameters->scalarVariableIndex; /* Create a new slice visualization element: */ currentSlice=new Slice(myParameters,getVariableManager()->getColorMap(svi),getPipe()); /* Update the slice extractor: */ sle.update(getDs(getVariableManager()->getDataSetByScalarVariable(svi)),getSe(getVariableManager()->getScalarExtractor(svi))); /* Start extracting the slice into the visualization element: */ sle.startSeededSlice(myParameters->dsl,myParameters->plane,currentSlice->getSurface()); /* Return the result: */ return currentSlice.getPointer(); }
MetaImage::Handle MetaImage::clone() { return Handle(new MetaImage(getImage(),getDs()->clone())); }