• 大小: 2.56MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-28
  • 语言: C/C++
  • 标签:

资源简介

计算机图形学分形树,用C语言编写的。实现的是一个二维的分形树。

资源截图

代码片段和文件信息

#include 
#include 

#include 
#include 
#define N 4
#define BMP_Header_Length 54




GLuint texBarktexLeaftexLawn;
int list=0;

GLUquadric *qObj;//创建二次曲面对象

float R[N+1] H[N+1] k p q m alpha z[N+1] a=6;

float Gauss(float min float max)
{
//rand()函数返回0和RAND_MAX之间的一个伪随机数(pseudorandom)。
//RAND_MAX常量被定义stdlib.h中,并且等于32767或更大。

int a = rand() b = rand() c = rand() d = rand();

int x = a + b + c + d;
double y = (x*sqrt((float)3))/RAND_MAX-sqrt((float)12);

double mid = (min + max)/2;
float z = (float)(mid + (max - mid)*y/(2*sqrt((float)3)));
return z;


void setData(void)
{
R[N] = 0.3;
H[N] = 2.4;

k = 0.5;

q = 0.5; 
m = 0.7;
alpha = 45;
for(int i=N-1; i>=0; i--)//N==5
{
R[i] = R[i+1]*q;
H[i] = H[i+1]*m;

}
}

void init (void)
{
GLfloat white_light[]={1.0 1.0 0.0 1.0};
GLfloat light_position[]={14 14 -14};//设置光源
qObj = gluNewQuadric();//创建二次对象
gluQuadricTexture(qObjGL_TRUE);

glClearColor(0.00.00.01);


glShadeModel(GL_SMOOTH);

glLightfv(GL_LIGHT0 GL_AMBIENT white_light);
glLightfv(GL_LIGHT0 GL_DIFFUSE white_light);
glLightfv(GL_LIGHT0 GL_SPECULAR white_light);
glLightfv(GL_LIGHT0 GL_POSITION light_position);//设置光源

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);

    setData();

}

void drawTree(int n)
{


if(n == 0)//绘制最末尾的枝干
{
// float curLen = len*((rand()/(float)RAND_MAX)/2 + 0.75f);
float h = Gauss(0.4 0.7);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2DtexBark);

gluCylinder(qObj R[n] k*R[n] H[n] 20 20);//圆柱

glDisable(GL_TEXTURE_2D);
glTranslatef(00H[n]);

glCallList(list);

return;
     }
else


glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2DtexBark);
gluCylinder(qObj R[n] k*R[n] H[n] 20 20);//k=0.5

glTranslatef(0 0 H[n]);

glDisable(GL_TEXTURE_2D);





glPushMatrix();

glRotatef(Gauss(30 80) 0 0 1);
glRotatef(Gauss(40 70) 0 1 0);
drawTree(n-1);

glPopMatrix();

 glPushMatrix();

glRotatef(Gauss(140 200) 0 0 1);
glRotatef(Gauss(40 70) 0 1 0);
drawTree(n-1);
glPopMatrix();
   
     glPushMatrix();
     
glRotatef(Gauss(260 320) 0 0 1);
glRotatef(Gauss(40 70) 0 1 0);
drawTree(n-1);
glPopMatrix();


     glPushMatrix();
glRotatef(Gauss(5 15) 0 1 0);
glRotatef(Gauss(30 50) 0 0 1);
drawTree(n-1);
glPopMatrix();




};
}
void drawLawn()
{

glDisable(GL_TEXTURE_2D);

glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f1.0f0.0f);

glBindTexture(GL_TEXTURE_2DtexLawn);
    glEnable(GL_TEXTURE_2D);
glBegin(GL_POLYGON);
glTexCoord2f(0.0f0.0f);glVertex3f(-15.0f 15.0f 0.0f);
glTexCoord2f(0.0f1.0f); glVertex3f(15.0f 15.0f0.0f);
glTexCoord2f(1.0f1.0f);glVertex3f( 15.0f -15.0f0.0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     196662  2006-07-13 12:04  simpleGL\data\bark00.bmp

     文件     196664  2006-07-14 08:48  simpleGL\data\bark01.bmp

     文件     196664  2006-07-14 08:49  simpleGL\data\bark02.bmp

     文件     140288  2010-03-12 14:44  simpleGL\data\Debug\vc60.idb

     文件      77824  2010-03-12 14:44  simpleGL\data\Debug\vc60.pdb

     文件      20244  2010-03-12 14:44  simpleGL\data\Debug\View.obj

     文件    3661804  2010-03-12 14:44  simpleGL\data\Debug\View.pch

     文件      25600  2010-03-12 14:44  simpleGL\data\Debug\View.pdb

     文件     196662  2009-11-01 16:36  simpleGL\data\lawn.bmp

     文件     786488  2006-07-16 07:30  simpleGL\data\leaf00.bmp

     文件     196664  2006-07-18 04:43  simpleGL\data\leaf01.bmp

     文件     196664  2006-07-16 12:31  simpleGL\data\leaf02.bmp

    ..A.SH.     36864  2009-11-01 16:36  simpleGL\data\Thumbs.db

     文件       1693  2006-07-24 00:28  simpleGL\data\View.cpp

     文件       3377  2010-03-12 14:44  simpleGL\data\View.dsp

     文件        514  2010-03-12 14:44  simpleGL\data\View.dsw

     文件        503  2006-07-23 23:51  simpleGL\data\View.h

     文件      33792  2010-03-12 14:44  simpleGL\data\View.ncb

     文件      53760  2010-03-12 14:44  simpleGL\data\View.opt

     文件       2534  2010-03-12 14:44  simpleGL\data\View.plg

     文件       7154  2010-11-12 11:03  simpleGL\Debug\BuildLog.htm

     文件         67  2010-11-12 11:03  simpleGL\Debug\mt.dep

     文件      23447  2010-11-12 11:03  simpleGL\Debug\opengl.obj

     文件     414228  2010-03-12 15:29  simpleGL\Debug\opengl.pch

     文件     410624  2010-03-12 15:29  simpleGL\Debug\opengl.pdb

     文件     274485  2010-11-12 11:04  simpleGL\Debug\simpleGL.exe

     文件        146  2010-09-17 07:51  simpleGL\Debug\simpleGL.exe.embed.manifest

     文件        212  2010-09-17 07:51  simpleGL\Debug\simpleGL.exe.embed.manifest.res

     文件        145  2010-11-12 11:03  simpleGL\Debug\simpleGL.exe.intermediate.manifest

     文件     370684  2010-11-12 11:04  simpleGL\Debug\simpleGL.ilk

............此处省略29个文件信息

评论

共有 条评论

相关资源