Re: Zobrazeni 3D polohy

Vojtěch Bubník bubnikv@seznam.cz
Čtvrtek Duben 12 11:10:19 CEST 2007


Používám Cortona VRML Client z http://www.parallelgraphics.com
Přikládám příklad kódu v C++, který vyrobí VRML soubor s 3d lomenou čárou dané barvy.
Vojta Bubník


void WriteContour(const char* strPath, const std::vector<Vector3f> &contour, COLORREF color)
{
	FILE *pFile = ::fopen(strPath, "wt");
	::fprintf(pFile, "#VRML V2.0 utf8\n");
	WriteContour(pFile, contour, color);
	::fclose(pFile);
}

void WriteContour(FILE *pFile, const std::vector<Vector3f> &contour, COLORREF color)
{
	::fprintf(pFile, "\
Shape {\n\
  appearance Appearance {\n\
    material Material {\n\
      emissiveColor %f %f %f\n\
    }\n\
  }\n\
  geometry IndexedLineSet {\n\
    coord Coordinate {\n\
		point [\n", (double)GetRValue(color) / 255.0, (double)GetGValue(color) / 255.0, (double)GetBValue(color) / 255.0);
	int nCnt = 0;
	for (std::vector<Vector3f>::const_iterator it = contour.begin(); it != contour.end(); ++ it) {
		const Vector3f &pt = *it;
		::fprintf(pFile, "\t\t\t%lf %lf %lf\n", pt[0], pt[1], pt[2]);
		++ nCnt;
	}
	::fprintf(pFile, "\
 	  ]\n\
    }\n\
    coordIndex [\n");
	for (int i = 0; i < nCnt; ++ i)
		::fprintf(pFile, "\t\t\t%ld\n", i);
	::fprintf(pFile, "\t\t\t0\n");
	::fprintf(pFile, "\
    ]\n\
  }\n\
}\n");
}



Další informace o konferenci Hw-list