目的: (1)掌握分形和分维的概念; (2)掌握分形的递归方法、L 系统的文法构图法和 IFS 迭代函数系统。
内容: 利用建模方法、消隐和渲染技术,设计一个完整真实地场景,并实现简单的场景漫游 要求: (1)生成至少一个植物的模型,植物可以是分形草和分形树; (2)对模型设置颜色 。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 49664 2020-05-27 13:34 ConsoleApplication6-分形.vsConsoleApplication6-分形v15.suo
文件 37867520 2020-05-27 13:34 ConsoleApplication6-分形.vsConsoleApplication6-分形v15Browse.VC.db
文件 42139648 2020-05-24 15:41 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH26e5c1166cbd822cMAIN.ipch
文件 327680 2020-05-25 20:14 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH39478fb5b7e80bc9POINT2.ipch
文件 32178176 2020-05-27 10:23 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH60516b5b0119225b3D-TREE.ipch
文件 30801920 2020-05-17 21:52 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH964240bb27e95747PCH.ipch
文件 32243712 2020-05-25 19:42 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHa43c841fe80e3f6bFRACTAL_GRASS.ipch
文件 31981568 2020-05-25 16:59 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHa69ba51fc2ab32d5源.ipch
文件 30801920 2020-05-25 20:12 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH54c090000b8d0f83D-TREE.ipch
文件 4128768 2020-05-25 19:53 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHdd1c20751debda44MOUNTAIN.ipch
文件 327680 2020-05-17 21:47 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchd6ef6b62776e58b1.ipch
文件 8814 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication63D-tree.cpp
文件 439 2018-05-08 10:29 ConsoleApplication6-分形ConsoleApplication63D-tree.h
文件 7929 2020-05-25 20:46 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj
文件 1072 2020-05-25 20:41 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj.filters
文件 165 2020-05-17 21:47 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj.user
文件 720054 2020-05-25 21:39 ConsoleApplication6-分形ConsoleApplication6data21.1.bmp
文件 691254 2016-05-25 21:44 ConsoleApplication6-分形ConsoleApplication6data2door1.bmp
文件 720054 2018-05-08 16:54 ConsoleApplication6-分形ConsoleApplication6data2ground2.bmp
文件 720054 2016-05-25 21:05 ConsoleApplication6-分形ConsoleApplication6data2wall.bmp
文件 194675 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6Debug3D-tree.obj
文件 4448 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.command.1.tlog
文件 44786 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.read.1.tlog
文件 5210 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.write.1.tlog
文件 244 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogConsoleApplication6.lastbuildstate
文件 5830 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tloglink.command.1.tlog
文件 4076 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tloglink.read.1.tlog
文件 740 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tloglink.write.1.tlog
文件 307 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleApplication6.log
文件 178089 2020-05-25 19:41 ConsoleApplication6-分形ConsoleApplication6Debugfractal_grass.obj
............此处省略35个文件信息
#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-分形.vsConsoleApplication6-分形v15.suo
文件 37867520 2020-05-27 13:34 ConsoleApplication6-分形.vsConsoleApplication6-分形v15Browse.VC.db
文件 42139648 2020-05-24 15:41 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH26e5c1166cbd822cMAIN.ipch
文件 327680 2020-05-25 20:14 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH39478fb5b7e80bc9POINT2.ipch
文件 32178176 2020-05-27 10:23 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH60516b5b0119225b3D-TREE.ipch
文件 30801920 2020-05-17 21:52 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH964240bb27e95747PCH.ipch
文件 32243712 2020-05-25 19:42 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHa43c841fe80e3f6bFRACTAL_GRASS.ipch
文件 31981568 2020-05-25 16:59 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHa69ba51fc2ab32d5源.ipch
文件 30801920 2020-05-25 20:12 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCH54c090000b8d0f83D-TREE.ipch
文件 4128768 2020-05-25 19:53 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchAutoPCHdd1c20751debda44MOUNTAIN.ipch
文件 327680 2020-05-17 21:47 ConsoleApplication6-分形.vsConsoleApplication6-分形v15ipchd6ef6b62776e58b1.ipch
文件 8814 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication63D-tree.cpp
文件 439 2018-05-08 10:29 ConsoleApplication6-分形ConsoleApplication63D-tree.h
文件 7929 2020-05-25 20:46 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj
文件 1072 2020-05-25 20:41 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj.filters
文件 165 2020-05-17 21:47 ConsoleApplication6-分形ConsoleApplication6ConsoleApplication6.vcxproj.user
文件 720054 2020-05-25 21:39 ConsoleApplication6-分形ConsoleApplication6data21.1.bmp
文件 691254 2016-05-25 21:44 ConsoleApplication6-分形ConsoleApplication6data2door1.bmp
文件 720054 2018-05-08 16:54 ConsoleApplication6-分形ConsoleApplication6data2ground2.bmp
文件 720054 2016-05-25 21:05 ConsoleApplication6-分形ConsoleApplication6data2wall.bmp
文件 194675 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6Debug3D-tree.obj
文件 4448 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.command.1.tlog
文件 44786 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.read.1.tlog
文件 5210 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogCL.write.1.tlog
文件 244 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogConsoleApplication6.lastbuildstate
文件 5830 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogli
文件 4076 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogli
文件 740 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleA.4E9DC3A7.tlogli
文件 307 2020-05-25 21:40 ConsoleApplication6-分形ConsoleApplication6DebugConsoleApplication6.log
文件 178089 2020-05-25 19:41 ConsoleApplication6-分形ConsoleApplication6Debugfractal_grass.obj
............此处省略35个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)