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;
	}
Example #2
0
	/**
	 * 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)
	{
	}
Example #5
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)
	{
	}
Example #7
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();
	}
Example #10
0
MetaImage::Handle MetaImage::clone()
{
  return Handle(new MetaImage(getImage(),getDs()->clone()));
}