如何换算一条直线起点和终点在旋转一定角度后的坐标呢? 如图,我如何计算A和B点旋转后的坐标,以窗体中心点为旋转中心。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 矩阵相乘[x,y]*[cos(a),-sin(a)] sin(a),cos(a) 谢谢您的回答,还有一些不明白的地方:比如要旋转点A 坐标为(x轴=50,y轴=30)[x,y]*[cos(a),-sin(a)] x,y是指中心点位置还是点的坐标??上面矩阵相乘的的结果是不是:x*y*cos(a),x*y*-sin(a) ??sin(a),cos(a) 这又是表示什么?以上算出后的结果哪个是旋转后的A点的X轴坐标和Y轴坐标? [x,y]*|cos(a),-sin(a)| |sin(a),cos(a) |是矩阵相乘。矩阵的第一列相当于单位X轴(1,0)旋转a.第二列相当于单位Y轴(0,1)旋转a.画直角坐标图就明白了。 谢谢楼上的回复,我没有学边矩阵啊,您能不能给个公式,比如 ax' = ?????? 旋转后A点的X轴坐标等于什么乘以什么ay' = ?????? 旋转后A点的Y轴坐标等于什么乘以什么 我在旋转前把X轴减去原点与中心距离,Y同理,转换后再加上,但结果不对。我直接用的你函数以0,0旋转,横线,旋转后成斜线,不知道是不是我不会使用我使用的是pntRotate函数,第一和第二个参数是不是要旋转的点坐标啊?如果是那我就是这样传的!请指点! 点(x,y)绕坐标原点旋转a度后的坐标(x',y'):x' = x * cosa - y * sina ;y' = x * sina + y * cosa ; 很久以前写的了,我已经有点忘了,你自己试一下吧,我一般是在ACAD里进行简单的测试,标注坐标,然后旋转。再测试一下使用这个算法能不能够得到相同的答案就行了 复数学过吧?旋转theta角度就等于在其方向矢量上乘以复数cos(theta) + i sin(theta)要回答你这个问题,首先你需要知道旋转的“原点”是哪里,从原点到A是一个方向矢量,这个方向矢量乘以上面的旋转矢量就是答案 用我这个类通过向量的方式处理http://download.csdn.net/source/1888166 typedef struct tagPoint{ double fX; double fY;}fPoint;fPoint yourClass::rotate(fPoint o,double f_Angle,fPoint p){ fPoint tp; p.fX -=o.fX; p.fY -=o.fY; tp.fX=p.fX*cos(f_Angle) - p.fY*sin(f_Angle)+o.fX; tp.fY=p.fY*cos(f_Angle) + p.fX*sin(f_Angle)+o.fY; return tp;}记得#include"math.h" win32 如何实现实时绘制当前网络流量图 有关二维指针内存分配的问题,在线等。。。 窗口显示问题 请教把int转为CString的函数? 如何在Listbox中显示ico? 在VB中VC的预处理#define MAX_LOADSTRING 10要想写,怎么实现? VC++.NET 程序中 调用SNMP处理中,SnmpCreateSession 返回错误 如何clistctrl 给第一列单行不插入图标,双行插入图标? 关于mfc/基于 opengl的机器人仿真动画的问题 内存泄漏问题,高手请进! VC6.0的源窗口背景颜色设置问题 图像处理实验怎么做
[x,y]*[cos(a),-sin(a)]
sin(a),cos(a)
比如要旋转点A 坐标为(x轴=50,y轴=30)[x,y]*[cos(a),-sin(a)] x,y是指中心点位置还是点的坐标??上面矩阵相乘的的结果是不是:x*y*cos(a),x*y*-sin(a) ??sin(a),cos(a) 这又是表示什么?以上算出后的结果哪个是旋转后的A点的X轴坐标和Y轴坐标?
[x,y]*|cos(a),-sin(a)|
|sin(a),cos(a) |是矩阵相乘。
矩阵的第一列相当于单位X轴(1,0)旋转a.
第二列相当于单位Y轴(0,1)旋转a.
画直角坐标图就明白了。
ax' = ?????? 旋转后A点的X轴坐标等于什么乘以什么
ay' = ?????? 旋转后A点的Y轴坐标等于什么乘以什么
我直接用的你函数以0,0旋转,横线,旋转后成斜线,不知道是不是我不会使用
我使用的是pntRotate函数,第一和第二个参数是不是要旋转的点坐标啊?如果是那我就是这样传的!请指点!
点(x,y)绕坐标原点旋转a度后的坐标(x',y'):x' = x * cosa - y * sina ;
y' = x * sina + y * cosa ;
要回答你这个问题,首先你需要知道旋转的“原点”是哪里,从原点到A是一个方向矢量,这个方向矢量乘以上面的旋转矢量就是答案
http://download.csdn.net/source/1888166
{
double fX;
double fY;
}fPoint;
fPoint yourClass::rotate(fPoint o,double f_Angle,fPoint p)
{
fPoint tp;
p.fX -=o.fX;
p.fY -=o.fY;
tp.fX=p.fX*cos(f_Angle) - p.fY*sin(f_Angle)+o.fX;
tp.fY=p.fY*cos(f_Angle) + p.fX*sin(f_Angle)+o.fY;
return tp;
}记得#include"math.h"