L-Systems-OpenGL-master
所属分类:数值算法/人工智能
开发工具:Visual C++
文件大小:6KB
下载次数:13
上传日期:2017-06-30 10:17:57
上 传 者:
珙桐麻衣
说明: 用L算法模拟树木生长,包含源代码,比较浅显易懂,不是很复杂。不用贴图。
(Simulation of tree growth using L algorithm, including source code, relatively simple and easy to understand, not very complicated. No textures.)
文件列表:
src (0, 2013-07-21)
src\Paluka-L-System.cpp (8992, 2013-07-21)
Erik Paluka. Winter 2012.
L-Systems
Implemented in C++ using OpenGL.
I first expand the L-system n times (maximum depth of the tree) and save each expansion in a vector. I expand by iterating through the string starting at the beginning and replacing the letters with their production rules. I added randomness to the model by creating a pseudo random number between 0 and 1. The value of the random number dictates which production rule a letter gets replaced with.
When I draw the screen (display function), I first draw the ground (the plane that the tree is sitting in) using triangles. Depending on the current depth of the tree, I draw a specific L-system string that I expanded at the beginning. I draw the branch width (line width) based on the current branch depth. Each time a push matrix operation happens, I decrease the depth. Each time a pop matrix operation happens, I increase the depth. I draw the branches using lines. I draw the leaves using triangles.
Every 2 seconds, the current depth of the tree increases, which in turn grows the tree. Also, the length of the lines increase.
My tree is 3D. I did this by rotating in all three axis when a clockwise or counter-clockwise rotation occurs.
My tree blows in the wind by changing the angle of rotation for the branches by using a pseudo random number. The change in angle is dictated by the value of the random number.
近期下载者:
相关文件:
收藏者: