已知旋转中心和旋转角度,获得旋转之后的一组点坐标
2013-12-26 10:13
330 查看
#define PI 3.1415926535897932384626433832795
//已知旋转中心和旋转角度,获得旋转之后的一组点坐标 bool rotPoint(CPoint center,float rotAngleNow,CPoint src_corners[],CPoint dst_corners[],int num) { float reverseH[6]; float x = (float) (cos (rotAngleNow * PI / 180.)); float y = (float) (sin (rotAngleNow * PI / 180.)); reverseH[0] = x; reverseH[1] = y; reverseH[2] = (1-x)* center.x - y * center.y ; reverseH[3] = -y; reverseH[4] = x; reverseH[5] = y * center.x +(1-x)*center.y ; for( int i = 0; i < num; i++ ) { double x = src_corners[i].x, y = src_corners[i].y; double X = (reverseH[0]*x + reverseH[1]*y + reverseH[2]); double Y = (reverseH[3]*x + reverseH[4]*y + reverseH[5]); dst_corners[i] = CPoint(cvRound(X), cvRound(Y)); } return true; }
/************************************************************************ *函数名: rotAngle * *函数作用: 已知2个坐标点,求从 0------->x 逆时针需旋转多少角度到该位置 * * | * | * | * | *------------------------------------> x * | 0 * | * | * | * v * y * *函数参数: *CPoint pointO - 起点 *CPoint pointA - 终点 * *函数返回值: *double 向量OA,从 0------->x 逆时针需旋转多少角度到该位置 **************************************************************************/ double rotAngle(CPoint pointO,CPoint pointA) { double angle = 0; CPoint point; double temp; point = pointA - pointO;// pointAdd(pointA,pointMultiply(pointO,-1)); if ((0==point.x) && (0==point.y)) { return 0; } if (0==point.x) { angle = 90; return angle; } if (0==point.y) { angle = 0; return angle; } temp = fabsf(float(point.y)/float(point.x)); temp = atan(temp); temp = temp*180/PI ; if ((0<point.x)&&(0<point.y)) { angle = 360 - temp; return angle; } if ((0>point.x)&&(0<point.y)) { angle = 360 - (180 - temp); return angle; } if ((0<point.x)&&(0>point.y)) { angle = temp; return angle; } if ((0>point.x)&&(0>point.y)) { angle = 180 - temp; return angle; } printf("sceneDrawing :: getAngle error!"); return -1; }
相关文章推荐
- 在平面内,已知一个矩形的四个角坐标,将矩形绕中心点转动一个角度,求旋转后的角坐标.
- 已知2点坐标求出此2点构成直线的角度 并求出再此之后新的不同的2点构成直线与之前直线的角度差或者弧度差
- 已知2个坐标点,求从 0------->x 逆时针需旋转多少角度到该位置
- 根据旋转矩阵(roational matrix)计算三个坐标轴的旋转角度
- java 图片角度调整旋转、并获得图片信息
- 安卓百度地图根据2点坐标计算marker旋转角度
- 坐标旋转及角度反弹
- 已知圆心,半径,角度,求圆上的点坐标
- Revit中如何通过API获取对象的位置坐标和旋转角度
- matlab 已知函数值纵坐标值(Y值)获得对应的横坐标
- C/C++已知坐标求角度(函数atan和atan2)
- Opencv寻找轮廓的最小外接矩形,并获取矩形的中心点,旋转角度
- iOS开发 CGAffineTransform 让图片旋转, 旋转后获得图片旋转的角度
- 转 第十章 坐标旋转及角度反弹(as3.0)
- 传感器获取旋转矩阵R,机身坐标系和世界坐标系的映射remapR,获得旋转角度 orientationValues;
- 在圆内随机一个坐标点/已知圆心和点,求角度
- 根据中心点、半径长度、半径角度求另一半径的坐标
- 获取一点绕另一点旋转一定角度后的点坐标
- 平面上有一点(x,y),将其绕坐标原点旋转一角度α,求旋转后的点的坐标
- 高德地图---已知两点经纬度坐标求距离和角度