资源简介
目的: (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\li
文件 4076 2020-05-25 21:40 ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\li
文件 740 2020-05-25 21:40 ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleA.4E9DC3A7.tlog\li
文件 307 2020-05-25 21:40 ConsoleApplication6-分形\ConsoleApplication6\Debug\ConsoleApplication6.log
文件 178089 2020-05-25 19:41 ConsoleApplication6-分形\ConsoleApplication6\Debug\fractal_grass.obj
............此处省略35个文件信息
相关资源
- 网传哔哩哔哩后台源码 | 网传bilibil
- FMSoft_uniGUI_Complete_Professional_1.90.0.153
- Linux 教程166249
- 品优购项目 素材及代码
- 红帽Linux9
- Xilinx Zynq SoC与嵌入式Linux设计实战指南
- CUDA by example 中文:GPU高性能编程CUD
- 医学研究中的logistic回归分析及SAS实现
- 统计自然语言处理
- visualGDB-破解版-可用vs2017
- UML面向对象建模与设计第二版
- ultraCompare v16完美破解版(附注册机及
- H3C iNode(SSL) for macOS
- kernel-ml-aufs-3.10.5-3.el6.x86_64.rpm.zip
- 西门子SCL编程软件支持win7——V5.5
- 《Elasticsearch集成Hadoop最佳实践》--完
- jfreechart生成图片及导出pdf 、excel
- stm32F4固件库
- linux centos7_64 gcc依赖安装包
- Learning_OpenCV_3.pdf
- 夏宇闻SystemVerilog+验证方法学.pdf
- ArtificialIntelligence-AModernApproach3rdEditi
- DELL R720 安装2003 32位操作系统(经典)
- Syncro SVN Client v8.1 MacOSX 带注册机
- Tableau商业分析一点通,完整扫描版
- Hands-On Machine Learning with Scikit-Learn an
- Linux内核探秘 深入解析文件系统和设
- LaTeX入门 刘海洋.pdf
- Cloudera Administrator Training
- CISA 2011 Answers&Explation manual
评论
共有 条评论