我正在寻找一个好的算法来找到一个(不一定是凸面)多边形内的轴对齐矩形.最大的矩形会很好,但不是必需的 - 任何可以找到"相当好"的矩形的算法都可以.
多边形也可能有孔,但任何只适用于凸多边形或简单多边形的算法指针也会有所帮助.
在我的实现中,对于边的交叉测试相当便宜,但是"多边形点"测试是昂贵的,因此理想情况下应该最小化.
背景:我正在一个小型购物中心的网站上工作,该购物中心有多个矩形"单位"可供出租.当一个"商店"出现时,它可以租用一个或多个"单位",我想生成一个由商店组成的地图(无单位)
问题:
我有一个由点对定义的矩形(单位)列表[[lefttop_x;lefttop_y];[rightbottom_x;rightbottom_y]]- 我希望将它们合并为多边形,所以我可以正确地设置它们(我将通过Canvas/SVG/VML/Raphael.js渲染).
由于这个(最好是PHP,但我可以处理伪代码)操作,我想有一个多边形点数组.

谢谢.
PS:我一直在研究这个,我发现了多个'接近我想要的'问题+答案,但我要么太累了,要么我已经与数学脱节了太长时间:)
我正在为年轻人设计一个碰撞检测游戏教程,所以我希望它尽可能简单,以便更容易解释.
要求非常简单.世界是2D,只包含矩形(任意大小).BSP甚至四叉树似乎都是过度杀戮(同样,重点在于简单性)但是我想要比通过所有n(n-1)/ 2个可能的碰撞强制执行更有效的东西.
2D,仅矩形,简单.
任何人都可以指出我可以查找的算法吗?是我正在寻找的四叉树算法吗?
编辑:此外,矩形永远不会旋转(我保持简单).为了让您了解我正在工作的规模,将在您使用Pygame在Python中实现的典型用户的笔记本电脑/台式机(不到5年)上运行几百个矩形.
嘿,我正在编写一个快速程序,遇到需要使用圆圈进行碰撞检测的地方.但据我所知,只有Rectangle类具有.intersects(Point p)方法.有什么像我可以用同样方式使用的圆圈吗?
我正在寻找一种算法来将任意矩形最佳拟合到一组无序点.具体来说,我正在寻找一个矩形,其中点与任何一个矩形边的距离之和最小.我发现了很多最合适的直线,圆和椭圆算法,但没有一个矩形.理想情况下,我喜欢C,C++或Java中的某些东西,但对语言并不是那么挑剔.
输入数据通常由位于矩形上或靠近矩形的大多数点组成,具有一些异常值.数据分布不均匀,不太可能包括所有四个角.
我试图在我的移动应用程序的HTML/CSS中做这个形状:https: //embed.plnkr.co/9k8jbJyzUiSMSoSHlOti/
.boundary {
width: 100.13723%;
padding-bottom: 5.24078%;
position: relative;
overflow: hidden;
background-color: white;
}
.boundary:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
transform-origin: top left;
transform: rotate(3deg);
background-color: green;
}
.inner {
height: 100%;
width: 100%;
background-color: green;
}Run Code Online (Sandbox Code Playgroud)
<div class="boundary"></div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris …Run Code Online (Sandbox Code Playgroud)我在这里寻找一种算法,独立于特定的编程语言.
问题:
我们有一个二维显示区域(想象简单的像素缓冲区).定期地,一些像素被改变.我们需要找到一组封装所有更改像素的矩形.
计算一个封装所有已更改像素的单个可能很大的矩形将是微不足道的,但这是不可取的.我们宁愿将多个较小的,紧密拟合的矩形缩小到指定的最小尺寸(这是一个可以更改的变量).
例如,假设在整个显示区域内,左上角的几个像素发生了变化,右下角的几个像素发生了变化.我们不想计算整个区域的单个脏矩形 - 我们想要两个脏矩形:左上角的小矩形和右下角的小矩形.
性能至关重要,因此这个问题.
我认为,这个问题一直存在,绝对是在视频编解码器和远程桌面压缩区域.就我而言,在图形图像处理过程中,这是一个反复出现的问题,涉及多个用户同时在共享区域绘图.
有没有人知道已发布的算法或知道您过去使用过的解决方案?
谢谢!
我正在使用scene2d.这是我的代码:
group.addActor(new Actor() {
@Override
public Actor hit(float arg0, float arg1) {return null;}
@Override
public void draw(SpriteBatch batch, float arg1) {
batch.end();
shapeRenderer.begin(ShapeType.FilledRectangle);
shapeRenderer.setColor(Color.RED);
shapeRenderer.filledRect(0, 0, 300, 20);
shapeRenderer.end();
batch.begin();
}
});
Run Code Online (Sandbox Code Playgroud)
问题是它相对于屏幕绘制了这个矩形(x = 0,y = 0),但我需要它相对于我的组绘制.但是,如果我绘制其他实体:
batch.draw(texture, 0, 0, width, height);
Run Code Online (Sandbox Code Playgroud)
它正确地绘制了(x = 0,y = 0)相对于我的组(从组的左下角0,0像素).
任何建议如何在scene2d中实现形状绘制?有人可以解释为什么这两个调用的工作方式不同吗?
我试图使用svg在矩形内绘制一个矩形,但我没有看到内部矩形.有人可以帮助我,我正在做的错误是什么?代码如下.
<html>
<body>
<h1>My first SVG</h1>
<svg width="700" height="200">
<rect height="100" width="600" style="fill:rgb(255,255,255);stroke-width:3;stroke:rgb(0,0,0)">
<rect height="50" width="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)"/>
</rect>
</svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
提前致谢