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

📄 cad.cpp

📁 这是一个图形处理中的积累弦长参数化程序
💻 CPP
字号:
#include <stdlib.h> 
#include <time.h>
#include <fstream.h>
#include <math.h>
class Dpoint
{
public:
	int x;
	int y;
	int z;
	double u;
	double ru;
};

void Sort(Dpoint a[],int p,int q) //快速排序
{
	 
	Dpoint REC; 
	int i,j;
	i=p;
	j=q;

	REC=a[i];
	do
	{
	    while((a[j].x>REC.x)&&(j>i))
			j--;
		if(i<j)
		
		{
			a[i]=a[j];
			i++;
		}
		while((a[i].x<REC.x)&&(j>i))
			i++;
		if(i<j)
		{
			a[j]=a[i];
			j--;
		}
	}while(i!=j);
	   a[i]=REC;
	   if(p<i-1)
		   Sort(a,p,j-1);
	   else if(j+1<q)
		   Sort(a,j+1,q);
}


void main()
{
	int i;
	double x,y,z,d;
	Dpoint a[1001];
	srand((unsigned)time(NULL));
	for(i=0;i<=1000;i++)  //随机生成1001个数据点
	{
		a[i].x=rand();
		a[i].y=rand();
		a[i].z=rand();
	}
    
	Sort(a,0,1000);
	a[0].u=0;
	for(i=1;i<=1000;i++)  //积累弦长参数化
	{
		x=(a[i].x-a[i-1].x)*(a[i].x-a[i-1].x);
		y=(a[i].y-a[i-1].y)*(a[i].y-a[i-1].y);
		z=(a[i].z-a[i-1].z)*(a[i].z-a[i-1].z);
		d=sqrt(x+y+z);
		a[i].u=d+a[i-1].u;
	}
	for(i=0;i<=1000;i++) //规范化
	{
		a[i].ru=a[i].u/a[1000].u;
	}
	
	ofstream out("rand.txt"); //输出结果到文件rand.txt

	for(i=0;i<=1000;i++)

		out<<"  "<<i<<"       "<<a[i].x<<"    "<<a[i].y<<"    "<<a[i].z<<";"<<a[i].u<<"    "<<a[i].ru<<"\n";

	out.close();
}

⌨️ 快捷键说明

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