社区
图形处理/算法
帖子详情
如何判断点在旋转椭圆内,边界以及包围矩形中
chenzhixin
2009-07-15 06:25:33
椭圆由2点pt1,pt2确定,之间的距离作为长轴,aE=(pt1-pt2)距离/2;
椭圆的旋转角度为pt1和pt2之间的角度.
现在可以跟随鼠标动态绘制旋转的椭圆了。
需要做到椭圆的选取,如何判断一个点是否在旋转的椭圆内呢?
查看反汇编,他们使用世界坐标来转换,然后使用PtInRect来做。
...全文
504
4
打赏
收藏
如何判断点在旋转椭圆内,边界以及包围矩形中
椭圆由2点pt1,pt2确定,之间的距离作为长轴,aE=(pt1-pt2)距离/2; 椭圆的旋转角度为pt1和pt2之间的角度. 现在可以跟随鼠标动态绘制旋转的椭圆了。 需要做到椭圆的选取,如何判断一个点是否在旋转的椭圆内呢? 查看反汇编,他们使用世界坐标来转换,然后使用PtInRect来做。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenzhixin
2009-07-16
打赏
举报
回复
解决了。旋转的椭圆,需要将当前点绕中心点逆时针旋转angle
http://gpwiki.org/index.php/VB:Rotating_A_Point_In_2D
bool CDrawEllipse::AtEllipse(long x, long y)
{//判断点是否在椭圆上
float a,b,c;//椭圆的长半轴和短半轴,焦半轴
a=(float)abs(((m_x2-m_x1)/2));//长半轴
b=(float)abs(((m_y2-m_y1)/2));//短半轴
float DMax;
float d1,d2;//当前点到两个焦点的距离
float CenterPotX,CenterPotY;//中心点的坐标分量
CenterPotX=(float)((m_x2+m_x1)/2);
CenterPotY=(float)((m_y2+m_y1)/2);
if(a>=b)
{
c=(float)sqrt(a*a-b*b);//焦半轴
d1=(float)sqrt((x-CenterPotX+c)*(x-CenterPotX+c)+(y-CenterPotY)*(y-CenterPotY));//到左焦点的距离
d2=(float)sqrt((x-CenterPotX-c)*(x-CenterPotX-c)+(y-CenterPotY)*(y-CenterPotY));//到右焦点的距离
DMax=(float)abs(d1+d2-2*a);
}
if(a<b)
{
c=(float)sqrt(b*b-a*a);//焦半轴
d1=(float)sqrt((x-CenterPotX)*(x-CenterPotX)+(y-CenterPotY+c)*(y-CenterPotY+c));//到左焦点的距离
d2=(float)sqrt((x-CenterPotX)*(x-CenterPotX)+(y-CenterPotY-c)*(y-CenterPotY-c));//到右焦点的距离
DMax=(float)abs(d1+d2-2*b);
}
return (DMax<2);
}
bool CDrawEllipse::AtEllipseInside(long x, long y)
{//判断点是否在椭圆内
float a,b,c;//椭圆的长半轴和短半轴,焦半轴
a=(float)abs(((m_x2-m_x1)/2));//长半轴
b=(float)abs(((m_y2-m_y1)/2));//短半轴
float DMax;
float d1,d2;//当前点到两个焦点的距离
float CenterPotX,CenterPotY;//中心点的坐标分量
CenterPotX=(float)((m_x2+m_x1)/2);
CenterPotY=(float)((m_y2+m_y1)/2);
if(a>=b)
{
c=(float)sqrt(a*a-b*b);//焦半轴
d1=(float)sqrt((x-CenterPotX+c)*(x-CenterPotX+c)+(y-CenterPotY)*(y-CenterPotY));//到左焦点的距离
d2=(float)sqrt((x-CenterPotX-c)*(x-CenterPotX-c)+(y-CenterPotY)*(y-CenterPotY));//到右焦点的距离
DMax=(float)abs(2*a);
}
if(a<b)
{
c=(float)sqrt(b*b-a*a);//焦半轴
d1=(float)sqrt((x-CenterPotX)*(x-CenterPotX)+(y-CenterPotY+c)*(y-CenterPotY+c));//到左焦点的距离
d2=(float)sqrt((x-CenterPotX)*(x-CenterPotX)+(y-CenterPotY-c)*(y-CenterPotY-c));//到右焦点的距离
DMax=(float)abs(2*b);
}
return (d1+d2<DMax);
}
chenzhixin
2009-07-16
打赏
举报
回复
可是这个椭圆是旋转后的~
写不动代码的人
2009-07-15
打赏
举报
回复
//m_pt1 m_pt2是椭圆所在矩形的两个点
float fRX=(m_pt2.x-m_pt1.x)/2.f;
float fRY=(m_pt2.y-m_pt1.y)/2.f;
CPoint cter;//椭圆中心点
if(pow(pnt.x-cter.x,2)+pow(pnt.y-cter.y,2)*(fRX/fRY)*(fRX/fRY)<=fRX*fRX)
//在椭圆内部
用户 昵称
2009-07-15
打赏
举报
回复
知道椭圆的方程吗?如果知道方程,最直接的办法就是计算鼠标到两个焦点的距离。
任意
椭圆
的外凸包
矩形
算法
这里写自定义目录标题任意
椭圆
的外凸包
矩形
算法二次曲线的方程表达式二次曲线方程的系数关系二次曲线分类定理在Geogebra
中
,如何获取二次曲线方程或多项式系数针对一般方程计算
椭圆
的
边界
用 Geogebra 得到的结果离心率蒙日圆利用蒙日圆得到
椭圆
外凸包
矩形
面积差值对比参考文献 任意
椭圆
的外凸包
矩形
算法 问题来源:人脸检测数据集FDDB,涉及到将原标签
中
的
椭圆
形状转化为
矩形
框用于人脸检测,其
中
就有生成斜
椭圆
的外接
包围
矩形
的方法,结果如下图。 注意:不是下图的最小面积
矩形
,最小面积
矩形
指两对边分别与主轴和副轴平
使用OpenCV在C/C++
中
创建轮廓的
边界
旋转
框和
椭圆
边界
旋转
框是一个
矩形
框,它能够紧密地
包围
给定轮廓的区域,并且与给定轮廓的方向一致。
椭圆
是一个
旋转
的圆,它能够最好地适应给定轮廓的形状。在本文章
中
,我们将探讨如何使用OpenCV库在C/C++
中
创建轮廓的
边界
旋转
框和
椭圆
。接下来,我们需要通过使用阈值分割或边缘检测等技术找到图像
中
的轮廓。通过以上步骤,我们可以成功创建轮廓的
边界
旋转
框和
椭圆
,并将其绘制在图像上。函数来检测轮廓并计算
边界
旋转
框和
椭圆
。接下来,我们遍历每个轮廓,获取其
边界
旋转
框的四个顶
点
,并使用。一旦我们找到了图像
中
的轮廓,我们可以使用。
【技术碎片】【Java】计算
椭圆
的外接
矩形
坐标
遇到一个需要计算一般
椭圆
(斜
椭圆
)的外接
矩形
坐标的问题,在此记录一下已知
椭圆
的
中
心
点
坐标centerX centerY,
椭圆
的长轴,短轴majorRadius minorRadius,和
旋转
角度 angle。按理说java有原生的计算外接
矩形
的函数,先看看怎么实现的。
c++
中
计算2得n次方_斜
椭圆
外接正
矩形
计算方法
椭圆
外接正
矩形
计算公式How to get the bounding box for an ellipse?人脸检测数据集FDDB,涉及到将原标签
中
的
椭圆
形状转化为
矩形
框用于人脸检测,所以整理其
中
生成
椭圆
外接
矩形
的方法与代码。REF 1: 如何计算
包围
倾斜
椭圆
的最小
矩形
Explanation here: https://math.stackexchange.com/questions/91132/...
OpenCV之使用多边形将轮廓
包围
在实际的应用
中
,常常需要将检测到的轮廓用多边形来表示,主要涉及到以下函数。 1、返回外部
矩形
边界
:boundingRect()函数 此函数计算并返回指定
点
集最外面的
矩形
边界
。 Rect boundingRect(InptArray points) 函数的输入是二维的
点
集,可以是std::vector或Mat类型。 2、寻找最小
包围
矩形
:minAreaRect()函数 此函数对于给定的2D
点
集,寻找可
旋转
的最小面积的
包围
矩形
。 RotatedRect minAreaRect(InputArr
图形处理/算法
19,468
社区成员
50,700
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章