用c++ 写一个获取直线旋转任意度数后的直线的函数
时间: 2023-06-04 16:08:12 浏览: 195
c++实现直线生成算法
4星 · 用户满意度95%
好的,以下是获取旋转后的直线的C函数:
```
#include <math.h>
void rotateLine(double x1, double y1, double x2, double y2, double angle, double *newX1, double *newY1, double *newX2, double *newY2) {
double rAngle = angle * M_PI / 180.0;
double sinValue = sin(rAngle);
double cosValue = cos(rAngle);
// Translate point 1 to the origin
double tX1 = x1 - x1;
double tY1 = y1 - y1;
// Translate point 2 to the origin
double tX2 = x2 - x1;
double tY2 = y2 - y1;
// Rotate the points
double newX1Value = tX1 * cosValue - tY1 * sinValue;
double newY1Value = tX1 * sinValue + tY1 * cosValue;
double newX2Value = tX2 * cosValue - tY2 * sinValue;
double newY2Value = tX2 * sinValue + tY2 * cosValue;
// Translate the points back to their original positions
*newX1 = newX1Value + x1;
*newY1 = newY1Value + y1;
*newX2 = newX2Value + x1;
*newY2 = newY2Value + y1;
}
```
函数参数:
- x1:直线的起点x坐标
- y1:直线的起点y坐标
- x2:直线的终点x坐标
- y2:直线的终点y坐标
- angle:旋转角度,单位为度数
- newX1:指向新的起点x坐标的指针
- newY1:指向新的起点y坐标的指针
- newX2:指向新的终点x坐标的指针
- newY2:指向新的终点y坐标的指针
函数会在指针newX1、newY1、newX2和newY2中返回旋转后的直线的坐标。
阅读全文