用C++画出三角形绕原点旋转
时间: 2024-05-08 11:20:54 浏览: 77
c++画三角形
以下是使用 C 语言编写的绕原点旋转三角形的代码:
```c
#include <graphics.h> // 引入图形库头文件
#include <math.h> // 引入数学库头文件
#define PI 3.1415926 // 定义圆周率
int main() {
int gd = DETECT, gm; // 初始化图形模式
initgraph(&gd, &gm, ""); // 打开图形窗口
int x1 = 0, y1 = -50; // 定义三角形顶点1的坐标
int x2 = 43, y2 = 25; // 定义三角形顶点2的坐标
int x3 = -43, y3 = 25; // 定义三角形顶点3的坐标
int angle = 0; // 定义旋转角度
while (!kbhit()) { // 循环直到有键盘输入
cleardevice(); // 清空屏幕
// 计算旋转后的坐标
int new_x1 = x1 * cos(angle * PI / 180) - y1 * sin(angle * PI / 180);
int new_y1 = x1 * sin(angle * PI / 180) + y1 * cos(angle * PI / 180);
int new_x2 = x2 * cos(angle * PI / 180) - y2 * sin(angle * PI / 180);
int new_y2 = x2 * sin(angle * PI / 180) + y2 * cos(angle * PI / 180);
int new_x3 = x3 * cos(angle * PI / 180) - y3 * sin(angle * PI / 180);
int new_y3 = x3 * sin(angle * PI / 180) + y3 * cos(angle * PI / 180);
// 绘制旋转后的三角形
line(getmaxx() / 2 + new_x1, getmaxy() / 2 + new_y1,
getmaxx() / 2 + new_x2, getmaxy() / 2 + new_y2);
line(getmaxx() / 2 + new_x2, getmaxy() / 2 + new_y2,
getmaxx() / 2 + new_x3, getmaxy() / 2 + new_y3);
line(getmaxx() / 2 + new_x3, getmaxy() / 2 + new_y3,
getmaxx() / 2 + new_x1, getmaxy() / 2 + new_y1);
angle++; // 增加旋转角度
delay(50); // 延迟50毫秒
}
closegraph(); // 关闭图形窗口
return 0;
}
```
上述代码使用了 `graphics.h` 和 `math.h` 库,需要在编译时链接这两个库。具体方法是在编译命令中加上 `-lgraphics -lm` 参数,如下所示:
```
gcc triangle_rotation.c -lgraphics -lm
```
运行程序后,可以看到一个绕原点旋转的三角形。可以使用键盘输入来结束程序。
阅读全文