#include <math.h>
#include <QPointF>
#define MY_PI 3.14159265358979323846
//角度转弧度
double perCamPos::getRadFromAngle(double angle)
{
return (angle / 180 * MY_PI);
}
//根据某点,旋转一个角度
void perCamPos::rotateByAngle(QPointF pointCenter,
QPointF &pointNeedRotate,
double dAngleDegree)
{
//通过移动把旋转中心放到坐标原点
//旋转矩阵,公式如下(以原点旋转θ度)
//(x',y') = ( x*cosθ-y*sinθ , x*sinθ+y*cosθ )
QPointF pointshifting = pointCenter-QPointF(0,0);//旋转中心到坐标原点的距离
QPointF point0 = pointCenter - pointshifting;
QPointF point1 = pointNeedRotate - pointshifting;
double dAngle2Rad = getRadFromAngle(dAngleDegree);
QPointF point2(point1.x()*cos(dAngle2Rad) - point1.y()*sin(dAngle2Rad),
point1.x()*sin(dAngle2Rad) + point1.y()*cos(dAngle2Rad));
pointNeedRotate = point2 + pointshifting;
}
一点根据某点为圆心,旋转θ度
最新推荐文章于 2023-10-10 22:01:50 发布