用C++编写一段毕达哥拉斯分形动画
时间: 2023-07-11 15:04:44 浏览: 60
以下是一个简单的C++实现毕达哥拉斯分形动画的示例代码:
```cpp
#include <iostream>
#include <graphics.h>
#include <math.h>
using namespace std;
const int MAX_DEPTH = 10; // 最大迭代深度
const double ANGLE = 45.0; // 角度
const double SCALE = 0.7; // 缩放比例
void drawFractal(int x1, int y1, int x2, int y2, int depth)
{
if (depth > MAX_DEPTH) return;
int dx = x2 - x1;
int dy = y2 - y1;
int x3 = x2 - dy;
int y3 = y2 + dx;
int x4 = x1 - dy;
int y4 = y1 + dx;
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x4, y4);
line(x4, y4, x1, y1);
drawFractal(x1, y1, x4, y4, depth + 1);
drawFractal(x4, y4, x3, y3, depth + 1);
drawFractal(x3, y3, x2, y2, depth + 1);
}
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, NULL);
int x1 = 100, y1 = 100, x2 = 400, y2 = 100;
for (int i = 0; i < 5; i++) {
drawFractal(x1, y1, x2, y2, 0);
double dx = x2 - x1;
double dy = y2 - y1;
x2 = x1 + dx * cos(ANGLE) + dy * sin(ANGLE);
y2 = y1 - dx * sin(ANGLE) + dy * cos(ANGLE);
dx *= SCALE;
dy *= SCALE;
x1 = x2 - dx;
y1 = y2 - dy;
}
getch();
closegraph();
return 0;
}
```
注:本示例使用了Windows下的BGI图形库,如果您使用其他操作系统或图形库,请相应地进行修改。