📜  使用图形在C ++中创建蝴蝶主题分形(1)

📅  最后修改于: 2023-12-03 15:06:55.721000             🧑  作者: Mango

在C++中创建蝴蝶主题分形

介绍

蝴蝶主题分形是一种美丽而有趣的图形,其形状类似蝴蝶的翅膀。在本文中,我们将介绍如何用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;
}
程序解释
  1. 代码中的butterfly函数使用递归技术来绘制主题分形。
  2. x, y, r参数分别表示图形的中心点坐标和半径,r决定了图形的大小。
  3. 递归结束的条件是当r值小于5时,停止绘制图形。
  4. x1,y1是中间扇叶的左边叶子的点坐标,x2,y2是中心点上方的节点的坐标,x3,y3是中间扇叶右端叶子的坐标。
  5. 递归调用butterfly函数分别在三个点上进行,每次半径减小一半。
  6. main函数初始化图形,然后调用butterfly函数绘制图形,在最后等待用户按下任意键。
运行程序

如果你使用的是Turbo C++编译器,请先安装graphics.h库,并在编译的时候添加参数 -lgraphics。此外,在编译之前请注意在程序目录下放置BGI文件。

总结

本文介绍了如何在C++语言中创建蝴蝶主题分形,程序使用递归和线条算法进行绘制。通过本文,你可以学习并掌握程序中的递归技巧,在图形学中实现更多的绘画功能。