用C程序写一个计算机图形学平移旋转缩放实验,求完整代码
时间: 2023-08-28 15:03:20 浏览: 173
以下是使用C语言实现图形学平移、旋转和缩放的完整代码示例:
```c
#include <stdio.h>
#include <graphics.h>
#include <math.h>
// 定义常量pi
#define PI 3.14159265
// 定义图形的初始坐标
int x1 = 100, y1 = 100, x2 = 200, y2 = 200, x3 = 300, y3 = 100;
// 定义函数:绘制三角形
void drawTriangle() {
line(x1, y1, x2, y2);
line(x2, y2, x3, y3);
line(x3, y3, x1, y1);
}
// 定义函数:平移
void translate(int tx, int ty) {
x1 += tx;
y1 += ty;
x2 += tx;
y2 += ty;
x3 += tx;
y3 += ty;
}
// 定义函数:旋转
void rotate(float angle) {
float radian = angle * PI / 180.0; // 将角度转化为弧度
int tmp_x1 = x1, tmp_y1 = y1;
int tmp_x2 = x2, tmp_y2 = y2;
int tmp_x3 = x3, tmp_y3 = y3;
x1 = tmp_x1 * cos(radian) - tmp_y1 * sin(radian);
y1 = tmp_x1 * sin(radian) + tmp_y1 * cos(radian);
x2 = tmp_x2 * cos(radian) - tmp_y2 * sin(radian);
y2 = tmp_x2 * sin(radian) + tmp_y2 * cos(radian);
x3 = tmp_x3 * cos(radian) - tmp_y3 * sin(radian);
y3 = tmp_x3 * sin(radian) + tmp_y3 * cos(radian);
}
// 定义函数:缩放
void scale(float sx, float sy) {
x1 *= sx;
y1 *= sy;
x2 *= sx;
y2 *= sy;
x3 *= sx;
y3 *= sy;
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
// 绘制初始三角形
drawTriangle();
delay(1000);
// 平移
translate(50, 50);
cleardevice();
drawTriangle();
delay(1000);
// 旋转
rotate(45);
cleardevice();
drawTriangle();
delay(1000);
// 缩放
scale(0.5, 0.5);
cleardevice();
drawTriangle();
delay(1000);
closegraph();
return 0;
}
```
在这个示例程序中,我们使用了 `graphics.h` 头文件提供的函数来绘制图形,并且定义了三个函数来实现图形的平移、旋转和缩放。其中,平移函数 `translate()` 接受两个参数 `tx` 和 `ty`,分别表示在 X 和 Y 方向上的平移距离;旋转函数 `rotate()` 接受一个参数 `angle`,表示旋转的角度;缩放函数 `scale()` 接受两个参数 `sx` 和 `sy`,分别表示在 X 和 Y 方向上的缩放比例。在主函数中,我们首先绘制了初始的三角形,然后依次对它进行平移、旋转和缩放,并使用 `cleardevice()` 函数清空屏幕上的图形,以便绘制新的图形。最后,调用 `closegraph()` 函数关闭图形窗口。