社区
图形处理/算法
帖子详情
如何计算两个矩形相交部分的面积?
weakwater
2009-06-16 07:04:58
矩形1是一个正矩形,各边都是单位长度
矩形2是一个经过旋转后的矩形,但是仍然是一个矩形
如果快速判断这两个矩形是否相交
如果相交,如何计算出相交部分的大概面积呢?
所谓大概面积就是相交面积占矩形1的面积的1/2, 1/4, 1/8,大概的就可以
...全文
2290
20
打赏
收藏
如何计算两个矩形相交部分的面积?
矩形1是一个正矩形,各边都是单位长度 矩形2是一个经过旋转后的矩形,但是仍然是一个矩形 如果快速判断这两个矩形是否相交 如果相交,如何计算出相交部分的大概面积呢? 所谓大概面积就是相交面积占矩形1的面积的1/2, 1/4, 1/8,大概的就可以
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
梧桐168
2009-08-03
打赏
举报
回复
将相交的两个矩形顶点按照X,Y大小排序,应该就能很快求出交点的坐标
asideu
2009-06-21
打赏
举报
回复
[Quote=引用 18 楼 liumu1209 的回复:]
矩形相交必定有一个顶点落在另一个矩形内。(我无法证明。。。)
所以只需要判断点V是否在矩形A当中就行了。
A可以用四个条边线性函数表示{y <f(x),y <g(x),y>a(x),y>b(x)}
所以只需要判断点V是符合以上不等式。只要四个顶点符合,就表明两矩形相交。
[/Quote]
简单明了!呵呵
liumu1209
2009-06-20
打赏
举报
回复
矩形相交必定有一个顶点落在另一个矩形内。(我无法证明。。。)
所以只需要判断点V是否在矩形A当中就行了。
A可以用四个条边线性函数表示{y<f(x),y<g(x),y>a(x),y>b(x)}
所以只需要判断点V是符合以上不等式。只要四个顶点符合,就表明两矩形相交。
另外还有一方法就是通过矩阵变换,将坐标系的X轴与Y轴与矩形A的两边重合。(矩形任选三点V1,V2,V3组成向量a,b a.b=0,a,b就可以做为坐标系的两轴,a,b的公共点为原点 )
将此矩形A对X,Y轴垂直和平行投影得x1,x2,y1,y2,将点V也进行垂直和平行投影得x3,y3,只要x1<x3<x2且y1<y3<y2 那么就表明两矩形相交
矩形相交的公共面积,没有详细想过。只能给点意见了。
对矩形A,B分另作外接圆O1,O2。即然是求近似值,那我就求两面的公共面积了。(没有仔细想过误差会有多大)
已知条件是两圆半径r1,r2,以及两圆心的距离l,求它的公共面积还是很好求的。
或许可以用另一个模型然后用积分做出来吧,那样会很精确的噢。可惜早忘了。。。
weakwater
2009-06-19
打赏
举报
回复
[Quote=引用 14 楼 booklove 的回复:]
2楼的方法不错。
包含算不算相交啊?
[/Quote]
包含算相交,我就是想得到两个矩形公共区域的面积
逐像素计算是不是效率有点低?
我是在主频较低的嵌入式设备上计算的,计算结果也不用太精确
a396830
2009-06-19
打赏
举报
回复
帮顶
hendriclee
2009-06-19
打赏
举报
回复
用CRegion吧,想怎么求交就怎么求交……
booklove
2009-06-19
打赏
举报
回复
2楼的方法不错。
包含算不算相交啊?
wenqinwuhai
2009-06-17
打赏
举报
回复
mark
weakwater
2009-06-17
打赏
举报
回复
多谢大家的热心回复
这个算法要自己实现,不能用Windows API
dch4890164
2009-06-17
打赏
举报
回复
周培德 《计算几何 算法设计与分析》
aaaa3105563
2009-06-17
打赏
举报
回复
帮顶·
猫已经找不回了
2009-06-16
打赏
举报
回复
我觉得都可以分解为多个三角形,判断各个三角形是否有相交。
这样问题就简化为判断三角形相交的情况。
这个思路可行。
http://topic.csdn.net/t/20040919/08/3387364.html
用户 昵称
2009-06-16
打赏
举报
回复
相交好判断,相交部分的面积可以看成两个三角形,而且是可以精确解的。
tkminigame
2009-06-16
打赏
举报
回复
这个因为其中一个矩形是单位正交矩形,答案会简化很多啊。你可以把问题想象为把矩形2放在一个网格里,每个网格坐标都是矩形1的整数倍,很容易求出面积来啊。
bragi523
2009-06-16
打赏
举报
回复
计算像素就行吧
Gothic_girl
2009-06-16
打赏
举报
回复
求任意两矩形的相交面积,矩形可以是倾斜的
http://topic.csdn.net/u/20071115/16/E7CDF666-0295-4CCB-995F-5F7204527C0B.html
Gothic_girl
2009-06-16
打赏
举报
回复
参考算法:
判断矩形相交,并求相交面积
class Point
{
private int x, y;
internal int X
{
get
{
return this.x;
}
set
{
this.x = value;
}
}
internal int Y
{
get
{
return this.y;
}
set
{
this.y = value;
}
}
public Point(int x,int y)
{
this.x = x;
this.y = y;
}
}
class Rectangle
{
private Point min = null;
internal Point Min
{
get
{
return this.min;
}
}
private Point max = null;
internal Point Max
{
get
{
return this.max;
}
}
public Rectangle(Point min, Point max)
{
this.min = min;
this.max = max;
}
public Rectangle()
{
this.min = new Point(0,0) ;
this.max = new Point(0, 0);
}
}
class TestRect
{
public static void Main(String[] args)
{
Rectangle rect1 = new Rectangle();
Rectangle rect2 = new Rectangle();
Rectangle rect = new Rectangle();
int s = 0;
rect.Min.X = System.Math.Max(rect1.Min.X, rect2.Min.X);
rect.Min.Y = System.Math.Max(rect1.Min.Y, rect2.Min.Y);
rect.Max.X = System.Math.Min(rect1.Max.X, rect2.Max.X);
rect.Max.Y = System.Math.Min(rect1.Max.Y, rect2.Max.Y);
if (rect.Min.X < rect.Max.X && rect.Min.Y < rect.Max.Y)
{
s = (rect.Max.X - rect.Min.X) * (rect.Max.Y - rect.Min.Y);
}
else
{
s = 0;
}
System.Console.WriteLine(rect.Min.X);
System.Console.WriteLine(rect.Min.Y);
System.Console.WriteLine(rect.Max.X);
System.Console.WriteLine(rect.Max.Y);
System.Console.WriteLine(s);
System.Console.ReadLine();
}
}
yangyang__
2009-06-16
打赏
举报
回复
API函数:BOOL IntersectRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2)
形参lprcSrc1 与lprcSrc2为你要判断的两个矩形的RECT结构变量地址.
函数在形参lprcDst中返回两个矩形相交的区域(矩形)坐标.有了这个坐标,面积不愁.
如果两个矩形相交,函数返回非零值.否则返回0.
看不懂的话,看MSDN.
skyxie
2009-06-16
打赏
举报
回复
[Quote=引用楼主 weakwater 的帖子:]
矩形1是一个正矩形,各边都是单位长度
矩形2是一个经过旋转后的矩形,但是仍然是一个矩形
如果快速判断这两个矩形是否相交
如果相交,如何计算出相交部分的大概面积呢?
所谓大概面积就是相交面积占矩形1的面积的1/2, 1/4, 1/8,大概的就可以
[/Quote]
就用计算机算不规则图形面积的方法:
1. 生成一个包含包含这两个矩形的大矩形
2. 对大矩形中的任意一点, 如果它同时在两个小矩形内,则说明这个点属于相交的部分; 相交部分的面积就是所有这样的点的和.
不同时在两个小矩形内,则说明不属于相交部分.
这样求出来的相交面积是精确的.
如果相交面积为0,则说明不相交..
gyk120
2009-06-16
打赏
举报
回复
判断相交:
GBOOL IsIntersect(GRECT &rc)
{
if(IsEmpty(rc) || IsEmpty())
return FALSE;
if((left > rc.right) || (right < rc.left) || (top > rc.bottom) || (bottom < rc.top))
return FALSE;
return TRUE;
}
---------------------------------------------------------------
bool IsHitting(RECT rcSour, RECT rcDest)
{
bool b_Result=true;
if(rcSour.left>rcDest.right && rcSour.right>rcDest.left) b_Result=false;
if(rcSour.left<rcDest.right && rcSour.right<rcDest.left) b_Result=false;
if(rcSour.top>rcDest.bottom && rcSour.bottom>rcDest.top) b_Result=false;
if(rcSour.top<rcDest.bottom && rcSour.bottom<rcDest.top) b_Result=false;
return b_Result;
}
求面积的话,个人觉得可以用RGN来求
Python
计算
两个
矩形
重合
面积
代码实例
主要介绍了Python 实现
两个
矩形
重合
面积
代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
python
计算
两个
矩形
框重合百分比的实例
今天小编就为大家分享一篇python
计算
两个
矩形
框重合百分比的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
dhe.rar_生物技术_
相交
矩形
面积
判断坐标系中
矩形
是否
相交
以及
相交
面积
的算法
基于c++
计算
矩形
重叠
面积
代码实例
主要介绍了基于c++
计算
矩形
重叠
面积
代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
蓝桥杯 BASIC-18 基础练习
矩形
面积
交代码
蓝桥杯 问题描述 平面上有
两个
矩形
,它们的边平行于直角坐标系的X轴或Y轴。 对于每个
矩形
,我们给出它的一对相对顶点的坐标,请你编程算出
两个
矩形
的交的
面积
。 输入格式 输入仅包含两行,每行描述一个
矩形
。 在每行中,给出
矩形
的一对相对顶点的坐标,每个点的坐标都用
两个
绝对值不超过10^7的实数表示。 输出格式 输出仅包含一个实数,为交的
面积
,保留到小数后两位。 样例输入
图形处理/算法
19,471
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章