谢尔宾斯基三角形c++
时间: 2023-09-21 11:11:37 浏览: 157
Sierpinski-p5js:递归绘制谢尔宾斯基三角形分形(使用 p5.js 重构一个 C++ 项目)
谢尔宾斯基三角形是一种分形图形,可以用递归的方式来生成。下面是一个使用C++语言实现的谢尔宾斯基三角形的代码:
```c++
#include <iostream>
#include <graphics.h>
using namespace std;
void Sierpinski(int x1, int y1, int x2, int y2, int x3, int y3, int depth) {
if (depth == 0) {
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x1, y1);
} else {
int x4 = (x1 + x2) / 2;
int y4 = (y1 + y2) / 2;
int x5 = (x2 + x3) / 2;
int y5 = (y2 + y3) / 2;
int x6 = (x3 + x1) / 2;
int y6 = (y3 + y1) / 2;
Sierpinski(x1, y1, x4, y4, x6, y6, depth - 1);
Sierpinski(x4, y4, x2, y2, x5, y5, depth - 1);
Sierpinski(x6, y6, x5, y5, x3, y3, depth - 1);
}
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
int x1 = 100, y1 = 100;
int x2 = 200, y2 = 400;
int x3 = 400, y3 = 100;
int depth = 5;
Sierpinski(x1, y1, x2, y2, x3, y3, depth);
getch();
closegraph();
return 0;
}
```
在代码中,我们使用了`graphics.h`图形库来绘制图形。`Sierpinski`函数用于递归生成谢尔宾斯基三角形,它接受三个顶点的坐标和递归深度作为参数。当递归深度为0时,就绘制出三角形,否则就将三角形分成三个小三角形,分别以它们的顶点递归调用`Sierpinski`函数。
在`main`函数中,我们初始化了绘图环境,设置了三个顶点的坐标和递归深度,然后调用`Sierpinski`函数来生成谢尔宾斯基三角形。最后关闭绘图环境并退出程序。
阅读全文