社区
图形处理/算法
帖子详情
如何计算两个矩形相交部分的面积?
weakwater
2009-06-16 07:04:58
矩形1是一个正矩形,各边都是单位长度
矩形2是一个经过旋转后的矩形,但是仍然是一个矩形
如果快速判断这两个矩形是否相交
如果相交,如何计算出相交部分的大概面积呢?
所谓大概面积就是相交面积占矩形1的面积的1/2, 1/4, 1/8,大概的就可以
...全文
2413
20
打赏
收藏
如何计算两个矩形相交部分的面积?
矩形1是一个正矩形,各边都是单位长度 矩形2是一个经过旋转后的矩形,但是仍然是一个矩形 如果快速判断这两个矩形是否相交 如果相交,如何计算出相交部分的大概面积呢? 所谓大概面积就是相交面积占矩形1的面积的1/2, 1/4, 1/8,大概的就可以
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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来求
C语言求
两个
矩形
相交
面积
:平面上有
两个
矩形
A和B,其位置是任意的。编程求出其
相交
部分
的
面积
。
【输入形式】从标准输入读取两行以空格分隔的整数,格式如下: Ax1 Ay1 Ax2 Ay2 Bx1 By1 Bx2 By2 其中(x1,y1)和(x2,y2)为
矩形
对角线上端点的坐标。各坐标值均为整数,取值在0至1000之间。 【输出形式】向标准输出打印一个整数,是两
矩形
相交
部分
的
面积
(可能为0)。在输出末尾要有一个回车符。 【输入样例】 0 0 2 2 1 1 3 4 【输出样例】 1 以上为题目 以下为我的想法。 先放代码 #include <stdio.h>...
leetcode_223. Rectangle Area 求
两个
矩形
覆盖的
面积
之和
题目: Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined by its bottom left corner and top right corner as shown in the figure. Assume that
求
相交
矩形
的
相交
面积
可以求出
相交
部分
矩形
的左下角(x1,y1),和右上角的顶点(x2,y2);x2是先找出a和b俩个
矩形
,x轴大的值,取最小值,和x1刚好相反。y2是先找出a和b俩个
矩形
,y轴大的值,取最小值,和y1刚好相反。这样就求出俩个顶点;求出
面积
S=(x2-x1)*(y2-y1)同理: y1是先找出a和b俩个
矩形
,y轴小的值,取最大值。x1是先找出a和b俩个
矩形
,x轴小的值,取最大值。平面上有俩个
相交
的
矩形
(a和b)简单记录一下,怕忘记。右上角(x2,y2)
LeetCode 223 Rectangle Area(
矩形
面积
)
翻译 找到在二维平面中
两个
相交
矩形
的总
面积
。 每一个
矩形
都定义了其左下角和右上角的坐标。 (
矩形
例如以下图) 如果,总占地
面积
永远不会超过int的最大值。 原文 分析 这题前天试过,写了一堆推断。终究还是无果…… 贴几个别人的解决方式…… int computeArea(int A, int B, int C, int D, int E,...
矩形
面积
计算
矩形
面积
计算
题目描述 已知
矩形
的边与坐标轴平行,试求其周长,
面积
,以及
两个
矩形
相交
部分
面积
。 输入格式 x1 y1 x2 y2 x3 y3 x4 y4 说明:输入为8个整数,中间以空格分隔。前四个整数确定第一个
矩形
的位置,形如 x1 y1 x2 y2,其中为左下角坐标,为右上角坐标。后四个整数确定第二个
矩形
的位置。 输出格式 5个整数,以空格分隔,分别是第一个
矩形
的周长、
面积
;第二个
矩形
的周长、
面积
;以及
两个
矩形
相交
部分
面积
。 输入样例 1 1 4 4 2 2 5 5 输出样例 12 9 12 9 4
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章