当前位置: 首页>>代码示例>>C++>>正文


C++ Interpolator::setMode方法代码示例

本文整理汇总了C++中Interpolator::setMode方法的典型用法代码示例。如果您正苦于以下问题:C++ Interpolator::setMode方法的具体用法?C++ Interpolator::setMode怎么用?C++ Interpolator::setMode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Interpolator的用法示例。


在下文中一共展示了Interpolator::setMode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: process

void MeshProcessor::process(ObjectData* object) {

	//Statusinformationen ausgeben
	cout << "calculating temperature distribution for \"" << object->getName()
			<< "\"..." << endl;

	//Für alle Materialien...
	for (unsigned int i = 0; i < object->getMaterials()->size(); i++) {
		ObjectData::MaterialData* mat = &object->getMaterials()->at(i);
		tetgenio* io = mat->tetgenoutput;

		//ist es nötig, die Punktattributliste freizugeben?
		if (mat->tetgenoutput->numberofpointattributes != 0) {
			delete mat->tetgenoutput->pointattributelist;
		}

		//ist es nötig, die Extrapolationsstatusliste freizugeben?
		if (mat->extrapolated != NULL) {
			delete[] mat->extrapolated;
		}

		//Extrapolationsstatusliste neu erstellen
		mat->extrapolated = new bool[mat->tetgenoutput->numberofpoints];
		//Punktattributliste neu erstellen
		mat->tetgenoutput->numberofpointattributes = NUMBEROFSENSORATTRIBUTES;
		mat->tetgenoutput->pointattributelist =
				new REAL[NUMBEROFSENSORATTRIBUTES
						* mat->tetgenoutput->numberofpoints];

		Interpolator interpolator;
		interpolator.setMode(mat->interpolation_mode);

		//Ermitteln der Werte für alle Punkte...
		for (int j = 0; j < io->numberofpoints; j++) {

			//Statusinformationen ausgeben
			cout << "\rmaterial " << i + 1 << ": " << j + 1 << "/"
					<< io->numberofpoints << endl;

			SensorData* sd = &object->getSensorDataList()->at(
					object->getCurrentSensorIndex());
			interpolatePoint(mat, &sd->data.at(sd->current_time_index), j,
					&interpolator);
		}

		cout << endl;
	}
}
开发者ID:vroland,项目名称:SimpleAnalyzer,代码行数:48,代码来源:MeshProcessor.cpp

示例2: render_thread

/**
 * Funktion zum verteilten berechnen der 2D-Temperaturverteilung.
 * @param status_flag Zeiger auf Variable, die enthält ob der Thread beendet ist. (0 = Beendet)
 * @param value_img Liste für die Daten der Temperaturverteilung.
 * @param image Grafik für die Temperaturverteilung.
 * @param width Breite der Temperaturverteilungsgrafik.
 * @param height Höhe der Temperaturverteilungsgrafik.
 * @param startheight Starthöhe für diesen Thread in der Grafik.
 * @param delta_h Höhe des von diesem Thread zu berechnenden Streifens.
 * @param info Informationen über die Eigenschaften der zu berechnenden Ebene.
 * @param xvec X-Achse der Ebene.
 * @param yvec Y-Achse der Ebene.
 * @param v0 Mittelpunkt der Ebene.
 * @param bases Möglichst einfache Geometrien Geometrien der Materialien.
 * @param obj Das aktuelle Objekt.
 * @param sensor_data Die zu verwendenden Sensordaten.
 * @param use_last_tet Versuchen, die Interpolation durch vorgezogenes Testen des zuletzt verwendeten Tetraeders zu beschleunigen.
 * Diese Option ist verursacht Ungenauigkeiten und bietet zumeist wenig Performancegewinn.
 */
void render_thread(bool* status_flag, float* value_img, wxImage* image,
		int width, int height, int startheight, int delta_h,
		CutRender_info* info, Vector3D* xvec, Vector3D* yvec, Vector3D* v0,
		vector<tetgenio*>* bases, ObjectData* obj,
		vector<SensorPoint>* sensor_data, bool use_last_tet) {

	Interpolator interpolator;
	//Referenz auf den letzten für die Interpolation gewählten Tetraeder
	vector<SensorPoint*>* last_tet = new vector<SensorPoint*>;
	//Referenz auf den aktuell für die Interpolation gewählten Tetraeder
	vector<SensorPoint*>* new_tet = new vector<SensorPoint*>;
	//Die Visualisierungsinformationen
	Visualization_info* vis_info = wxGetApp().getVisualizationInfo();

	//Wurde der zuletzt verwendete Tetraeder initialisiert?
	bool last_tet_init = false;
	//Für alle Pixel im zu berechnenden Streifen...
	for (int x = 0; x < width; x++) {
		for (int y = startheight; y < startheight + delta_h; y++) {

			//Position des Pixels im 3D-Raum
			Vector3D* p = v0->copy();

			//Verschiebung auf der X-Achse der Ebene im vergleich zum Ebenenmittelpunkt
			Vector3D* part_x = xvec->copy();
			part_x->mult(
					x * info->mmperpixel / 1000.
							- width * info->mmperpixel / 2000);

			//Verschiebung auf der Y-Achse der Ebene im vergleich zum Ebenenmittelpunkt
			Vector3D* part_y = yvec->copy();
			part_y->mult(
					y * info->mmperpixel / 1000.
							- height * info->mmperpixel / 2000);

			//Berechnen der Position des Pixels im 3D-Raum
			p->add(part_x);
			p->add(part_y);
			delete part_x;
			delete part_y;

			//Initialisieren des Pixels
			image->SetAlpha(x, y, 0);
			image->SetRGB(x, y, 0, 0, 0);
			value_img[y * width + x] = -300;

			//Für alle Materialien des objekts...
			for (unsigned int m = 0; m < obj->getMaterials()->size(); m++) {
				//Das aktuelle Material
				ObjectData::MaterialData* mat = &obj->getMaterials()->at(m);

				//Befindet sich der Punkt im aktuellen Material?
				if (pointInsideMesh(p, bases->at(m),
						info->in_volume_algorithm)) {

					//Ermitteln des Wertes für den Punkt
					int status = 0;
					interpolator.setMode(mat->interpolation_mode);
					float value = (float) getPointValue(status, sensor_data,
							p->getXYZ(), &interpolator,
							(last_tet_init && use_last_tet) ? last_tet : NULL,
							use_last_tet ? new_tet : 0);

					//Tausch der Speicherorte des Tetraeders, in dem sich der Punkt in diesem und im vorherigen Durchlauf befand
					vector<SensorPoint*>* temp;
					temp = last_tet;
					last_tet = new_tet;
					new_tet = temp;
					last_tet_init = true;

					//Speichern des Wertes in der Temperaturverteilung
					value_img[y * width + x] = value;

					//Berechnen der Farbe zum Temperaturwert
					float inverse_hue = (value
							- vis_info->min_visualisation_temp)
							/ (vis_info->max_visualisation_temp
									+ vis_info->min_visualisation_temp);
					float* color = hsvToRgb(
							(1.0 - clampHue(inverse_hue)) * .666, 1, 1);

//.........这里部分代码省略.........
开发者ID:vroland,项目名称:SimpleAnalyzer,代码行数:101,代码来源:GUICutRenderWindow.cpp


注:本文中的Interpolator::setMode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。