📅  最后修改于: 2023-12-03 15:06:55.721000             🧑  作者: Mango
蝴蝶主题分形是一种美丽而有趣的图形,其形状类似蝴蝶的翅膀。在本文中,我们将介绍如何用C++语言创建蝴蝶主题分形。我们将使用计算机图形学中的线条算法和递归技术来绘制这个图形。
我们将使用C++语言,必须先导入一些图形库。这里使用的是graphics.h库,它可以在Turbo C++编译器上执行。以下是程序的主要实现代码:
#include <graphics.h>
#include <math.h>
void butterfly(int x, int y, int r)
{
if (r < 5)
return;
int x1 = x - r * cos(30 * 3.1415 / 180);
int y1 = y + r * sin(30 * 3.1415 / 180);
int x2 = x;
int y2 = y - r;
int x3 = x + r * cos(30 * 3.1415 / 180);
int y3 = y + r * sin(30 * 3.1415 / 180);
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
butterfly(x1, y1, r / 2);
butterfly(x2 - r * cos(60 * 3.1415 / 180), y2 - r * sin(60 * 3.1415 / 180), r / 2);
butterfly(x3, y3, r / 2);
}
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
int x = getmaxx() / 2;
int y = getmaxy() / 2;
int r = 150;
butterfly(x, y, r);
getch();
closegraph();
return 0;
}
butterfly
函数使用递归技术来绘制主题分形。x
, y
, r
参数分别表示图形的中心点坐标和半径,r
决定了图形的大小。r
值小于5时,停止绘制图形。x1,y1
是中间扇叶的左边叶子的点坐标,x2,y2
是中心点上方的节点的坐标,x3,y3
是中间扇叶右端叶子的坐标。butterfly
函数分别在三个点上进行,每次半径减小一半。main
函数初始化图形,然后调用butterfly
函数绘制图形,在最后等待用户按下任意键。如果你使用的是Turbo C++编译器,请先安装graphics.h库,并在编译的时候添加参数 -lgraphics
。此外,在编译之前请注意在程序目录下放置BGI文件。
本文介绍了如何在C++语言中创建蝴蝶主题分形,程序使用递归和线条算法进行绘制。通过本文,你可以学习并掌握程序中的递归技巧,在图形学中实现更多的绘画功能。