判断一个点是否在旋转过任意角度的矩形内
2016-01-07 15:57
369 查看
今天在做图像旋转时遇到了一个问题。图像是转好了,鼠标点按下的坐标也知道了,但是就不知道怎么判断在不在旋转后的图像里(当然用眼睛去看鼠标点按下的的位置,肯定是知道在不在旋转后的图像里的。~_~)。后面在网上查了一下,也没有一个现成可以用的算法代码。没办法,只能结合网上查的资料自己写了。现在已经写好了,所以就写出来供大家参考一下。
矩形没经过旋转时的左上角的坐标为(LeftUpX,LeftUpY), 右下角的坐标为(RightDownX,RightDownY),在矩形旋转角度为O之后,求此时按下的鼠标点(X,Y)在不在矩形内。
解决方案如下:(以下)
/*1、此时的矩形已经旋转了O度,那么第一步就是要还原鼠标点*/
/*矩形的长宽*/
int w = RightDownX - LeftUpX;
int h = RightDownY - LeftUpY;
/*矩形中心点坐标*/
Point center;
center.X = LeftUpX + w/2;
center.Y = LeftUpY+ h/2;
/*还原鼠标点*/
int nTempX, nTempY;
nTempX = center.X + (X - center.X)*cos((-O)*(PI/180)) - (Y - center.Y) *
sin((-O)*(PI/180));
nTempY = center.Y + (X - center.X)*sin((-O)*(PI/180)) + (Y - center.Y) *
cos((-O)*(PI/180));
/*2、判断还原后的鼠标点在不在没旋转的矩形内,如果还原后的鼠标点在没旋转的矩形内,那么鼠标点(X,Y)同样在旋转O度之后的矩形内,否则不在。*/
if(nTempX> LeftUpX &&
nTempX< RightDownX&&
nTempY> LeftUpY &&
nTempY< RightDownY)
{
//鼠标点(X,Y)在旋转O度之后的矩形内
}
第一次写博客,不好的地方请大家多多谅解!!!
矩形没经过旋转时的左上角的坐标为(LeftUpX,LeftUpY), 右下角的坐标为(RightDownX,RightDownY),在矩形旋转角度为O之后,求此时按下的鼠标点(X,Y)在不在矩形内。
解决方案如下:(以下)
/*1、此时的矩形已经旋转了O度,那么第一步就是要还原鼠标点*/
/*矩形的长宽*/
int w = RightDownX - LeftUpX;
int h = RightDownY - LeftUpY;
/*矩形中心点坐标*/
Point center;
center.X = LeftUpX + w/2;
center.Y = LeftUpY+ h/2;
/*还原鼠标点*/
int nTempX, nTempY;
nTempX = center.X + (X - center.X)*cos((-O)*(PI/180)) - (Y - center.Y) *
sin((-O)*(PI/180));
nTempY = center.Y + (X - center.X)*sin((-O)*(PI/180)) + (Y - center.Y) *
cos((-O)*(PI/180));
/*2、判断还原后的鼠标点在不在没旋转的矩形内,如果还原后的鼠标点在没旋转的矩形内,那么鼠标点(X,Y)同样在旋转O度之后的矩形内,否则不在。*/
if(nTempX> LeftUpX &&
nTempX< RightDownX&&
nTempY> LeftUpY &&
nTempY< RightDownY)
{
//鼠标点(X,Y)在旋转O度之后的矩形内
}
第一次写博客,不好的地方请大家多多谅解!!!
相关文章推荐
- Kean博客2006年9月-2007年8月链接
- [转载]深入了解 Struts 1.1
- IO库 8.6
- java调用c++生成的动态和静态库时遇到的问题
- IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败
- JavaScript入门经典 学习笔记
- TOPCODER SRM 648 -AB
- uC/OSII 中各种事件管理方式的一般规律
- 元数据
- android studio应用(二):eclipse项目导入as后的编译
- zip压缩流转本地文件及解压
- jquery的animate设置样式overflow:hidden的解决方法
- centos6.5部署nfs共享目录
- LeetCode 25 - Reverse Nodes in k-Group
- android中DatePickerDialog只显示年月
- CentOS 6.4 x64 系统回收站功能
- CSS应用
- MySql高级三
- SQL SERVER 清理日志
- 10.UIApplication的基本使用