四个点的矩形 如何旋转到 c++
时间: 2023-11-28 15:50:48 浏览: 50
要旋转一个矩形,需要将每个点绕矩形的中心点旋转一定角度。假设矩形的中心点为 (cx, cy),四个点分别为 (x1, y1), (x2, y2), (x3, y3), (x4, y4),旋转角度为 theta 弧度,则旋转后的点的坐标可以通过以下公式计算:
x' = (x - cx) * cos(theta) - (y - cy) * sin(theta) + cx
y' = (x - cx) * sin(theta) + (y - cy) * cos(theta) + cy
其中,(x, y) 是原始点的坐标,(x', y') 是旋转后的点的坐标。
下面是一个 C++ 代码示例,实现了将四个点绕矩形中心点旋转指定角度的功能:
```cpp
#include <cmath>
struct Point {
float x;
float y;
};
void rotate_rect(Point& p1, Point& p2, Point& p3, Point& p4, float cx, float cy, float theta) {
float cos_theta = cos(theta);
float sin_theta = sin(theta);
for (auto& p : {p1, p2, p3, p4}) {
float x = p.x;
float y = p.y;
p.x = (x - cx) * cos_theta - (y - cy) * sin_theta + cx;
p.y = (x - cx) * sin_theta + (y - cy) * cos_theta + cy;
}
}
```
使用示例:
```cpp
int main() {
Point p1{0, 0};
Point p2{1, 0};
Point p3{1, 1};
Point p4{0, 1};
float cx = 0.5;
float cy = 0.5;
float theta = M_PI / 4; // 旋转45度
rotate_rect(p1, p2, p3, p4, cx, cy, theta);
return 0;
}
```
阅读全文