⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vrmlobject.cpp

📁 marchingcube源代码
💻 CPP
字号:

#include "VRMLobject.h"#include "math.h"//class VRMLobject:void VRMLobject_relese(VRMLobject *This){	//relese the linked lists:	Point3D *tmpP1 = This->PointListHead;	Point3D *tmpP2;	Triangle *tmpT1 = This->TriangleListHead;	Triangle *tmpT2;	while (tmpP1)	{		tmpP2 = tmpP1;		tmpP1 = tmpP1->next;		free(tmpP2);	}	while (tmpT1)	{		tmpT2 = tmpT1;		tmpT1 = tmpT1->next;		free(tmpT2);	}}void VRMLobject_WriteTo(VRMLobject *This, FILE *outfile){	This->PointListHead = 0;	This->PointListTail = 0;	This->TriangleListHead = 0;	This->TriangleListTail = 0;	This->MyOutFile = outfile;	This->NbPoints = 0;	This->NbTri = 0;	This->N = 0;}void VRMLobject_AddPoint(VRMLobject *This, Point3D *APoint3D){	//printf("adding a point to the object...\n");	if (This->PointListHead==0)	{		This->PointListHead = new_Point3D(APoint3D);		This->PointListTail = This->PointListHead;	}	else	{		This->PointListTail->next = new_Point3D(APoint3D);		This->PointListTail = This->PointListTail->next;	}	This->NbPoints++;	This->PointListTail->next = 0;}void VRMLobject_AddTriangle(VRMLobject *This, Triangle *ATriangle){	printf("adding a triangle to the object...\n");	if (This->TriangleListHead==0)	{		This->TriangleListHead = new_Triangle(ATriangle);		This->TriangleListTail = This->TriangleListHead;	}	else	{		This->TriangleListTail->next = new_Triangle(ATriangle);		This->TriangleListTail = This->TriangleListTail->next;	}	This->NbTri++;	This->TriangleListTail->next = 0;}void VRMLobject_AddTriangleList(VRMLobject *This, TriangleList *ATriangleList){	printf("adding a triangle list to the object...\n");	This->TriangleListHead = ATriangleList->Head;	This->TriangleListTail = ATriangleList->Tail;	ATriangleList->Head = 0;	ATriangleList->Tail = 0;	This->NbTri = VRMLobject_CountNbTri(This);}int VRMLobject_CountNbTri(VRMLobject *This){	int Nb = 0;	Triangle *tmp = This->TriangleListHead;	while (tmp)	{		Nb++;		tmp = tmp->next;	}	return Nb;}void VRMLobject_SaveToFileAsVRML1(VRMLobject *This){	const char *String1 =
	"#VRML V1.0 ascii\n"	"Separator {	#Produced by the marchin cubes algorithm\n"	"				#Implemented by Marcus Hewat, all rights reserved\n"	"Info {string \"Generated by Marcus Hewat's marching cubes implementation\"}\n"	"DEF front PerspectiveCamera {\n"	"position         0.5  0.5 2.5\n"	"orientation      0 0 1  0\n"	"focalDistance    5\n"	"heightAngle      0.785398}\n"	"DEF top PerspectiveCamera {\n"	"position         0.5  2 0.5\n"	"orientation      1 0 0  -1.57\n"	"focalDistance    5\n"	"heightAngle      0.785398}\n"	"DEF under PerspectiveCamera {\n"	"position         0.5  -1.5 0.5\n"	"orientation      1 0 0  1.57\n"	"focalDistance    5\n"	"heightAngle      0.785398}\n"	"DEF left PerspectiveCamera {\n"	"position         2 0.5 0.5\n"	"orientation      0 1 0  1.57\n"	"focalDistance    5\n"	"heightAngle      0.785398}\n"	"DEF right PerspectiveCamera {\n"	"position         -1 0.5 0.5\n"	"orientation      0 1 0  -1.57\n"	"focalDistance    5\n"	"heightAngle      0.785398}\n"			"	Material {diffuseColor 0 0.8 0.2}\n"			"		NormalBinding {value PER_VERTEX}\n"			"		Coordinate3 {\n"			"			point [\n";	const char *String2 = "]\n"			"	}\n"			"	IndexedFaceSet {\n"			"		#clockwise from the outside:\n"			"		coordIndex [	\n";	const char *String3 = "\n"			"		]\n"			"	}\n"			"}\n";	Point3D *tmp1 = This->PointListHead;	Triangle *tmp2 = This->TriangleListHead;	fprintf(This->MyOutFile,String1);	while (tmp1!=0)	{
		fprintf(This->MyOutFile,"%f %f %f,\n",tmp1->x,tmp1->y,tmp1->z);		tmp1 = tmp1->next;	}
	fprintf(This->MyOutFile,String2);	while (tmp2!=0)	{
		fprintf(This->MyOutFile,"%i, %i, %i, -1,\n",tmp2->b,tmp2->a,tmp2->c);		tmp2 = tmp2->next;	}
	fprintf(This->MyOutFile,String3);
}
void VRMLobject_SaveToFileAsOff(VRMLobject *This){	Point3D *tmp1 = This->PointListHead;	Triangle *tmp2 = This->TriangleListHead;	printf("writing off file...\n");	printf("%i %i %i\n",This->NbPoints,This->NbTri,This->N);	fprintf(This->MyOutFile,"%i %i %i\n",This->NbPoints,This->NbTri,This->N);	while (tmp1!=0)	{		Point3D_write(tmp1, This->MyOutFile);		tmp1 = tmp1->next;	}	while (tmp2!=0)	{		Triangle_write(tmp2, This->MyOutFile);		tmp2 = tmp2->next;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -