假设由四个点的一个多边形,需要进行旋转a度,给定原先的坐标点的位置,求新的坐标点的位置
解法:使用计算机图形学中的旋转矩阵
—— —— —— ——
| Point1,Point2 | | cos -sin |
| Point3,Point4 | * | sin cos | =新的点坐标位置矩阵
—— —— —— ——
下面的程序实现了一个自己画的图的旋转
//参数 pt 当前屏幕中心点的坐标,当a = 0时,为没有旋转的坐标点的位置,注意屏幕是以左上角为中心点的
CBrush brush;
brush.CreateSolidBrush(RGB(100, 100, 255));
CPen pen;
pen.CreatePen(0, 1, RGB(100, 100, 255));
memoryDC->SelectObject(brush);
POINT pts[4];//多边形的四个点
//注意:因为绘图画线有先后顺序的原因,这里的点是有顺序的!!
//使用了旋转矩阵
//cos -sin
//sin cos
pts[0].x = pt.x + (-12) * sinResult;
pts[0].y = pt.y + (-12) * cosResult;
pts[1].x = pt.x + (-10) * cosResult +(6) * sinResult;
pts[1].y = pt.y + (10) * sinResult + 6 * cosResult;
pts[2] = pt;
pts[3].x = pt.x + 10 * cosResult + (6) * sinResult;
pts[3].y = pt.y + (-10) * sinResult + 6 * cosResult;
memoryDC->SelectObject(pen);
memoryDC->Polygon(pts, 4);
brush.DeleteObject();
pen.DeleteObject();
|
阅读(2888) | 评论(0) | 转发(0) |