不使用graphics.h,写一段c++代码,用递归实现koch三角形的绘制
时间: 2023-12-10 07:40:40 浏览: 47
以下是使用递归实现Koch三角形绘制的C++代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 定义点结构体
struct Point {
float x;
float y;
};
// 绘制线段
void drawLine(Point p1, Point p2) {
cout << "draw line from (" << p1.x << ", " << p1.y << ") to ("
<< p2.x << ", " << p2.y << ")" << endl;
}
// 递归绘制Koch曲线
void koch(Point p1, Point p2, int n) {
if (n == 0) {
drawLine(p1, p2);
return;
}
// 计算点p3、p4、p5
float x_diff = p2.x - p1.x;
float y_diff = p2.y - p1.y;
Point p3 = {p1.x + x_diff / 3, p1.y + y_diff / 3};
Point p5 = {p2.x - x_diff / 3, p2.y - y_diff / 3};
float angle = M_PI / 3;
Point p4 = {p3.x + cos(angle) * x_diff / 3 - sin(angle) * y_diff / 3,
p3.y + sin(angle) * x_diff / 3 + cos(angle) * y_diff / 3};
// 递归绘制
koch(p1, p3, n - 1);
koch(p3, p4, n - 1);
koch(p4, p5, n - 1);
koch(p5, p2, n - 1);
}
int main() {
Point p1 = {0, 0};
Point p2 = {100, 0};
int n = 3;
koch(p1, p2, n);
return 0;
}
```
这段代码通过递归来实现Koch曲线的绘制。对于每条线段,我们计算出它的三个中点p3、p4、p5,并按照Koch曲线的公式递归地绘制出它的四个子线段。当递归到n=0时,我们直接绘制出该线段即可。在main函数中,我们定义了起点和终点坐标,n表示递归深度,即Koch曲线的阶数。将这些参数传入koch函数中即可绘制出Koch三角形。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)