不使用graphics.h,写一段c++代码,用递归实现koch三角形的绘制
时间: 2023-12-10 22:40:55 浏览: 76
以下是使用递归实现 Koch 曲线的 C++ 代码,可以通过修改其中的参数来绘制 Koch 三角形:
```
#include <iostream>
#include <cmath>
using namespace std;
// 定义点的结构体
struct Point {
double x, y;
};
// 递归绘制 Koch 曲线
void koch(Point p1, Point p2, int level) {
if (level == 0) {
// 如果递归到最后一层,直接绘制直线
cout << p1.x << " " << p1.y << endl;
cout << p2.x << " " << p2.y << endl;
} else {
// 计算 Koch 曲线的 4 个顶点
Point p3 = {
(2 * p1.x + p2.x) / 3,
(2 * p1.y + p2.y) / 3
};
Point p4 = {
(p1.x + p2.x * 2) / 3,
(p1.y + p2.y * 2) / 3
};
Point p5 = {
(p3.x + p4.x) / 2 + (p4.y - p3.y) * sqrt(3) / 2,
(p3.y + p4.y) / 2 + (p3.x - p4.x) * sqrt(3) / 2
};
// 递归绘制 Koch 曲线
koch(p1, p3, level - 1);
koch(p3, p5, level - 1);
koch(p5, p4, level - 1);
koch(p4, p2, level - 1);
}
}
int main() {
int level = 4; // 控制 Koch 曲线的递归深度
Point p1 = {0, 0};
Point p2 = {100, 0};
koch(p1, p2, level);
return 0;
}
```
当递归深度为 1 时,绘制的图形是一个等边三角形。当递归深度增加时,绘制的图形会越来越接近 Koch 三角形。你可以根据需要修改 `level` 的值来控制绘制的深度。
阅读全文