基于gl库的等位线生成填充程序(网格法、四叉树法) 下载本文

内容发布更新时间 : 2024/12/25 12:59:17星期一 下面是文章的全部内容请认真阅读。

此程序已经运行通过,使用时解压gult库到后台运行工程中,然后黏贴此程序到.cpp文件同时将数据文件路径设置修改,运行即可、 #include #include #include %using namespace std; int g_max,g_min; int Dc; int Ncolor; float *r,*g,*b; int **a;

int row = 0,column = 0;

void FreeMemory2D(int **&pp) { if(pp) {//释放顺序::一维指针-->二维指针 delete []pp[0]; pp[0]=NULL; delete []pp; pp=NULL; } }

bool AllocMemory2D(int ** &p,int rows,int columns) { int **pp; pp=NULL; pp=new int*[rows]; if (!pp) { return false; } pp[0]=new int [rows*columns];//allocate a big block if (!pp[0]) { //TRACE(\ return false; }

for(int i=1;i

void ReadData()//读取文件数据 { FILE *fp; //char ch; int i,j; if((fp=fopen(\ { cout<<\ } fseek(fp,0L,0);//把文件内部指针移动到离文件开头0字节处. fscanf(fp,\ fscanf(fp,\ AllocMemory2D(a, row, column); g_max=0; g_min=0xfffffff; while(!feof(fp))//确定出最大值和最小值以确定差值 { for(i=0;i=a[i][j]) g_min=a[i][j]; } } }

cout<

void Initial(void)//初始化窗口,设置窗口背景颜色为白色,指定设置投影参数 { glClearColor(1.0f,1.0f,1.0f,1.0f);//设置窗体背景颜色(白色) glMatrixMode(GL_PROJECTION);//投影矩阵 gluOrtho2D(0.0,400.0,0.0,300.0);//二维图像投影矩阵 }

void gltLine2d(float x0, float y0, float x1, float y1)//画线 { glColor3f(0.0f,0.0f,0.0f); glBegin(GL_LINES); glVertex2d(x0, y0);//(x0,y0)(x1,y1)为端点坐标, glVertex2d(x1, y1);//参数x0,y0,x1,y1用于从外界接受直线端点坐标 glEnd(); }

void Color(int m)//构建颜色填充表,形参m用于设置颜色级数,接收其它函数中的值传递 { r=new float[m]; g=new float[m]; b=new float[m]; r[0]=1.0; g[m-1]=1.0; r[m-1]=0.0; g[0]=0.0; b[0]=0.0; b[m-1]=0.0; float dr=(r[m-1]-r[0])/m; float dg=(g[m-1]-g[0])/m; float db=(b[m-1]-b[0])/m; for(int i=1;i

void TreeMath(float x,float y,float dx,float dy,int z1,int z2,int z3,int z4)//循环递归调用四叉树算法填充网格矩形颜色值 { int Ic1,Ic2,Ic3,Ic4;