在C++中编写二维图形平移、旋转和缩放函数
时间: 2024-02-22 18:00:00 浏览: 113
用C++实现图像旋转
5星 · 资源好评率100%
好的,下面是 C++ 中编写二维图形平移、旋转和缩放函数的示例代码:
```c++
#include <cmath>
// 定义二维点结构体
struct Point {
double x;
double y;
};
/**
* 二维点平移函数
* @param p 二维点
* @param dx 水平偏移量
* @param dy 垂直偏移量
*/
void translate(Point& p, double dx, double dy) {
p.x += dx;
p.y += dy;
}
/**
* 二维点旋转函数
* @param p 二维点
* @param angle 旋转角度(弧度制)
*/
void rotate(Point& p, double angle) {
double x = p.x * std::cos(angle) - p.y * std::sin(angle);
double y = p.x * std::sin(angle) + p.y * std::cos(angle);
p.x = x;
p.y = y;
}
/**
* 二维点缩放函数
* @param p 二维点
* @param sx 水平缩放比例
* @param sy 垂直缩放比例
*/
void scale(Point& p, double sx, double sy) {
p.x *= sx;
p.y *= sy;
}
```
其中,`Point` 结构体定义了二维点的坐标,`translate` 函数实现了二维点的平移操作,`rotate` 函数实现了二维点的旋转操作,`scale` 函数实现了二维点的缩放操作。
如果需要对二维图形进行操作,可以先将图形转换为一组点,然后对每个点进行相应的操作。例如,对于一个三角形,可以用如下代码表示:
```c++
Point triangle[3] = {{0, 0}, {1, 0}, {0, 1}};
```
其中,`triangle` 数组存储了三角形的三个顶点,可以对每个顶点分别进行平移、旋转和缩放操作,从而实现对整个三角形的操作。
阅读全文