分形树制作教程
一、引言
实验目的
熟悉图形化界面程序,开发有趣应用。同时,进一步了解C#的图形化编程。
实验任务
参考分形的概念要求
- 通绘制分形树或者其他分形图形。
- 可以对图形进行保存和打开等操作。
实验环境
- VS2019
- .NET Framework 4.7.2
二、 实验过程
需求分析
使用C# 的GDI界面绘制图形,并对图形进行保存。总体而言就是使我们熟练的掌握如何使用C#的UI界面对图形进行绘制,在操作要求上和之前的画图软件的要求差不多。唯一有点区别的就是对于分形的掌握。
分形
分形是一种很广义的概念,较为著名的有如Mandelbrot,Julia等等
总而言之,分形是由某种形状的部件组成,在某种程度上类似于整体。所以就可以从一个非常简单的图形生成一个极度复杂的图像。而分形因此就天然的具有了递归的特性,本次实验则是选择一个较为简单的分形树作为练手。
没错就是我!
三、代码实现
核心代码
void drawTree(int n,Point point, double angle, double length, float width)
{
if (n == 0)
{
return;
}
Point p = new Point(point.X + (int)(length * Math.Cos(angle)), point.Y - (int)(length * Math.Sin(angle)));
Pen pen = new Pen(Color.Black, width);
g.DrawLine(pen, point, p);
drawTree(n-1,p, angle + Math.PI / 9, length * 0.8, width * 0.8f);//递归画左半个
drawTree(n-1,p, angle - Math.PI / 9, length * 0.8, width * 0.8f);//递归画右半个
}
解释一下这段代码
参数n表示分支次数,当进行十次分支后,分形结束。
参数point,表示划线位置
angle,length,width分别表示偏转角度,线长,线宽。
Point p = new Point(point.X + (int)