编辑:
简单的代码我用来解决问题以防任何人感兴趣(感谢Fredrik):
int windowOverlap(Rectangle rect1, Rectangle rect2)
{
if (rect1.IntersectsWith(rect2))
{
Rectangle overlap = Rectangle.Intersect(rect1, rect2);
if (overlap.IsEmpty)
return overlap.Width * overlap.Height;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
原始问题:
我想知道一种快速而又脏的方法来检查两个矩形是否重叠,以及它们是否确实计算了重叠区域.为了好奇,我对以下情况感兴趣:1)两个矩形中的所有线条都是垂直的或水平的,或2)任何两个矩形的一般情况,但我真正需要的唯一答案是案例1.
我在想:
double areaOfOverlap( Rect A, Rect B)
{
if ( A.Intersects(B) )
{
// calculate area
// return area
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对于A.Intersects(),我考虑使用分离轴测试,但如果矩形只有水平和垂直线,那么还有更简单(更快)的检查方法吗?
如果矩形只有水平和垂直线,那么计算它们相交的区域有一个快速的方法吗?
最后,这与这个问题无关,但我很感激有人可能会在一本好书/网页上提出任何建议,我可以在那里查看计算机图形学的数学知识.我已经离开大学一段时间了,觉得我忘记了一切:)!其他人有这个问题吗?
(注意:我发现这个问题与此不同,这似乎更复杂,并没有直接回答这个问题.)
我想在Android中从RectF转换为Rect.目前我有:
RectF rectF = new RectF();
rectF.set( ... some values ... );
...
Rect rect = new Rect((int)rectF.left,
(int)rectF.top,
(int)rectF.right,
(int)rectF.bottom));
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
假设你有一组范围:
显然,这些范围在某些点重叠.您如何剖析这些范围以生成非重叠范围列表,同时保留与其原始范围相关的信息(在这种情况下,范围后面的字母)?
例如,运行算法后的上述结果将是:
我的应用程序的目标是让用户能够通过在iPhone屏幕的左侧和右侧滑动来对不同的计划选项进行排序.当用户对这些不同的计划选项进行排序时,如何绘制和删除矩形?
我有一个UIViewController.h,UIViewController.m和UIViewController.xib文件来操作.我需要一个单独的UIView类吗?如果是这样,我如何将该UIView类连接到我的.xib文件中的视图?
我想在WPF(通过代码)中绘制一个矩形并填充它的外部.
这是一个例子:

矩形的外部是灰色的(低不透明度),矩形的填充是透明的.
如何在OpenCV中绘制带圆角的矩形?我知道函数ellipse()和line()可以简单地放在一起绘制它.我只是想知道是否有人之前已经做过并且已经把它放在一个合适的功能中所以我可以使用它?理想情况下,拐角半径是在参数中校准.
我搜索了很多,但似乎以前没有人遇到过这个问题.如果没有人有这样的功能,我可能会在几天内发布我自己的解决方案.
什么是将Rect变量转换为RectF变量的最佳方法?我无法施展它.
RectF rect = (RectF) currentRect; //produces an error
Run Code Online (Sandbox Code Playgroud) 我Rectangle在一个程序中使用Java的类.
我有两个Rectangle对象:
Rectangle big = new Rectangle(...);
Rectangle small = new Rectangle(...);
Run Code Online (Sandbox Code Playgroud)
矩形的具体尺寸并不重要.然而,big总是会大于small(在两宽度和高度).
通常,small完全包含在内big.我可以Rectangle#contains用来验证这一点.然而,当这是不是这样,我想移动 small到内完全包含big.两个矩形的尺寸都不应改变.
例如:

我知道可以使用四个条件Math.max和Math.min,但是有更优雅的方式吗?
我尝试在鼠标悬停矩形时显示工具提示.我的尝试是使用<g>并设置一个title并设置title为<rect>自己,但不会产生任何可见的输出(在Chrome上).
HTML
<svg width="200px" height="200px">
<g title="blue rectangle">
<rect width="50px" height="50px" fill="blue" x="10px" y="10px"></rect>
</g>
<rect width="50px" height="50px" fill="red" x="60px" y="60px" title="red rectangle"></rect>
</svg>
Run Code Online (Sandbox Code Playgroud)
观察
感谢@Jacob Gray评论,问题依然存在于Chrome上(FireFox表现正常).
有人能指出我正确的方向吗?
我有一个已经应用了旋转的矩形.我想获得未旋转的尺寸(x,y,宽度,高度).
以下是元素的尺寸:
Bounds at a 90 rotation: {
height 30
width 0
x 25
y 10
}
Run Code Online (Sandbox Code Playgroud)
以下是旋转设置为无后的尺寸:
Bounds at rotation 0 {
height 0
width 30
x 10
y 25
}
Run Code Online (Sandbox Code Playgroud)
在过去,我能够将旋转设置为0,然后读取更新的边界.但是,我使用的其中一个功能有一个错误,所以现在我必须手动完成.
是否有一个简单的公式,使用我已有的信息获得旋转0的界限?
更新:对象围绕对象的中心旋转.
更新:
我需要的是类似下面的功能:
function getRectangleAtRotation(rect, rotation) {
var rotatedRectangle = {}
rotatedRectangle.x = Math.rotation(rect.x * rotation);
rotatedRectangle.y = Math.rotation(rect.y * rotation);
rotatedRectangle.width = Math.rotation(rect.width * rotation);
rotatedRectangle.height = Math.rotation(rect.height * rotation);
return rotatedRectangle;
}
var rectangle = {x: 25, y: 10, height: 30, width: 0 }; …Run Code Online (Sandbox Code Playgroud)