• 大小: 41.07MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-10
  • 语言: 其他
  • 标签: L  IFS  

资源简介

目的: (1)掌握分形和分维的概念; (2)掌握分形的递归方法、L 系统的文法构图法和 IFS 迭代函数系统。 内容: 利用建模方法、消隐和渲染技术,设计一个完整真实地场景,并实现简单的场景漫游 要求: (1)生成至少一个植物的模型,植物可以是分形草和分形树; (2)对模型设置颜色 。

资源截图

代码片段和文件信息

#include 

#include “3D-tree.h“

GLint WindW = 800;
GLint WindH = 600;
GLfloat oldx oldy;//鼠标移动因子
GLfloat xangle = 15.0f;
GLfloat yangle = -15.0f;//旋转因子  



GLfloat PI = 3.14;
string way[3]; //提供生成规则 
string rule temprule;

float len; //单步长
float len1;
//float Alphax;
float Alphay;
float Alphaz;
int k;   //树干树
int n;  //迭代次数

Node   stack[150];
int    stackpointer;

static GLuint textName[3];
char* filename[3] = { “data2\\1.1.bmp“ “data2\\wall.bmp“ “data2\\door1.bmp“ };
Image image[3];

void Draw_Cube(GLfloat x1 GLfloat x2 GLfloat y1 GLfloat y2 GLfloat z1 GLfloat z2);
void LSystemRule();
void drawGrass();

void readImage(char* fname int m)
{
FILE* pfile = NULL;
fopen_s(&pfile fname “rb“);
if (pfile == 0) exit(0);
//读取图像大小

fseek(pfile 0x0012 SEEK_SET);
fread(&image[m].imagewidth sizeof(image[m].imagewidth) 1 pfile);
fread(&image[m].imageheight sizeof(image[m].imageheight) 1 pfile);
//计算像素数据长度
image[m].pixellength = image[m].imagewidth * 3;
while (image[m].pixellength % 4 != 0) image[m].pixellength++; // 补充数据,直到pixellength是的倍数
image[m].pixellength *= image[m].imageheight;
//读取像素数据
image[m].pixeldata = (GLubyte*)malloc(image[m].pixellength);
if (image[m].pixeldata == 0) exit(0);
fseek(pfile 54 SEEK_SET);
fread(image[m].pixeldata image[m].pixellength 1 pfile);

//关闭文件
fclose(pfile);

}
/////////////////////////////////
void  init()
{
//glClearColor(0.0 0.0 1.0 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-25.0 25.0 -25.0 25.0 -25.0 25.0);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_DEPTH_TEST);

LSystemRule();
for (int i = 0; i < 3; i++)
{
//读取图像文件
glPixelStorei(GL_UNPACK_ALIGNMENT 1);
readImage(filename[i] i);

glGenTextures(1 &textName[i]);
glBindTexture(GL_TEXTURE_2D textName[i]);
//加载纹理
glTexImage2D(GL_TEXTURE_2D 0 GL_RGB image[i].imagewidth image[i].imageheight 0
GL_BGR_EXT GL_UNSIGNED_BYTE image[i].pixeldata);

//设置纹理过滤
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
//设置纹理环境
//glTexEnvf(GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_REPLACE);  //纹理
}

glDisable(GL_BLEND);
}
void Draw_Cube(GLfloat x1GLfloat x2GLfloat y1GLfloat y2GLfloat z1GLfloat z2)  
{//由立方体组成,可知六个参数即可构造八个顶点  
int i j;  
GLfloat vertex[8][3] = {  
//八个顶点,从v1-v8  
x1y1z2  //0
x2y1z2  //1
x1y2z2  //2
x2y2z2  //3
x1y1z1  //4
x2y1z1  //5
x1y2z1  //6
x2y2z1  //7
};  
GLint surface[6][4] = {  
//v1对应0以此类推  
0132  //front
4576  //back
2376  //top
0154  //bottom
0264  //left
1375   //right
};

//将每个立方体分成六个面绘制 
for(i = 0; i < 6; i++)  
{
if (i

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

    ..A..H.     49664  2020-05-27 13:34  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\.suo

     文件   37867520  2020-05-27 13:34  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\Browse.VC.db

     文件   42139648  2020-05-24 15:41  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\26e5c1166cbd822c\MAIN.ipch

     文件     327680  2020-05-25 20:14  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\39478fb5b7e80bc9\POINT2.ipch

     文件   32178176  2020-05-27 10:23  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\60516b5b0119225b\3D-TREE.ipch

     文件   30801920  2020-05-17 21:52  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\964240bb27e95747\PCH.ipch

     文件   32243712  2020-05-25 19:42  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\a43c841fe80e3f6b\FRACTAL_GRASS.ipch

     文件   31981568  2020-05-25 16:59  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\a69ba51fc2ab32d5\源.ipch

     文件   30801920  2020-05-25 20:12  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\b54c090000b8d0f8\3D-TREE.ipch

     文件    4128768  2020-05-25 19:53  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\AutoPCH\dd1c20751debda44\MOUNTAIN.ipch

     文件     327680  2020-05-17 21:47  ConsoleApplication6-分形\.vs\ConsoleApplication6-分形\v15\ipch\d6ef6b62776e58b1.ipch

     文件       8814  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\3D-tree.cpp

     文件        439  2018-05-08 10:29  ConsoleApplication6-分形\ConsoleApplication6\3D-tree.h

     文件       7929  2020-05-25 20:46  ConsoleApplication6-分形\ConsoleApplication6\ConsoleApplication6.vcxproj

     文件       1072  2020-05-25 20:41  ConsoleApplication6-分形\ConsoleApplication6\ConsoleApplication6.vcxproj.filters

     文件        165  2020-05-17 21:47  ConsoleApplication6-分形\ConsoleApplication6\ConsoleApplication6.vcxproj.user

     文件     720054  2020-05-25 21:39  ConsoleApplication6-分形\ConsoleApplication6\data2\1.1.bmp

     文件     691254  2016-05-25 21:44  ConsoleApplication6-分形\ConsoleApplication6\data2\door1.bmp

     文件     720054  2018-05-08 16:54  ConsoleApplication6-分形\ConsoleApplication6\data2\ground2.bmp

     文件     720054  2016-05-25 21:05  ConsoleApplication6-分形\ConsoleApplication6\data2\wall.bmp

     文件     194675  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\3D-tree.obj

     文件       4448  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\CL.command.1.tlog

     文件      44786  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\CL.read.1.tlog

     文件       5210  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\CL.write.1.tlog

     文件        244  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\ConsoleApplication6.lastbuildstate

     文件       5830  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\link.command.1.tlog

     文件       4076  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\link.read.1.tlog

     文件        740  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\link.write.1.tlog

     文件        307  2020-05-25 21:40  ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleApplication6.log

     文件     178089  2020-05-25 19:41  ConsoleApplication6-分形\ConsoleApplication6\Debug\fractal_grass.obj

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

评论

共有 条评论