相关疑难解决方法(0)

计算旋转矩形中的最大矩形

我正在尝试找到计算最大(面积)矩形的最佳方法,该矩形可以包含在旋转的矩形内.

一些图片应该有助于(我希望)可视化我的意思:

具有给定宽度和高度的输入矩形 按角度旋转erctangle 输出内部矩形

给出输入矩形的宽度和高度,以及旋转它的角度.输出矩形不会旋转或倾斜.

我正沿着漫长的路线往下走,我甚至不确定它是否会处理角落的情况(没有双关语).我确信这有一个优雅的解决方案.有小费吗?

编辑:输出矩形点不一定要触摸输入矩形边.(感谢E先生)

language-agnostic algorithm math geometry

54
推荐指数
5
解决办法
1万
查看次数

在2d块网格中查找矩形

假设我有一个块网格,7x12.我们使用颜色'*','%','@'和一个空单元' - '.

1 2 3 4 5 6 7
- - - - - - -  1
- - - - - - -  2
% % - - - - -  3
% % - - - - *  4 
% % - - - @ %  5
@ @ @ - - @ %  6
@ @ * * * - *  7
* * * % % % %  8 
% @ @ % * * …
Run Code Online (Sandbox Code Playgroud)

algorithm grid

13
推荐指数
1
解决办法
2万
查看次数

最大尺寸方形子矩阵,全1

给定一个二进制矩阵,我找出了所有1s 的最大尺寸方形子矩阵.

例如,考虑以下二进制矩阵:

   0  1  1  0  1 
   1  1  0  1  0 
   0  1  1  1  0
   1  1  1  1  0
   1  1  1  1  1
   0  0  0  0  0
Run Code Online (Sandbox Code Playgroud)

所有设置位的最大平方子矩阵是

1  1  1
1  1  1
1  1  1
Run Code Online (Sandbox Code Playgroud)

我在网上搜索解决方案,然后找到了构建辅助矩阵的关系:

 If M[i][j] is 1 then
            S[i][j] = min(S[i][j-1], S[i-1][j], S[i-1][j-1]) + 1
         Else /*If M[i][j] is 0*/
            S[i][j] = 0
Run Code Online (Sandbox Code Playgroud)
  1. M[][]原始矩阵在哪里,s[][]是辅助矩阵?
  2. 这种关系意味着什么?
  3. 它是如何有用的.

c algorithm matrix

8
推荐指数
1
解决办法
5376
查看次数

在坐标系中查找大多数未填充的点

我有一个基本代表一个屏幕的坐标系.
我有任意数量的职位.例如:

population = [
    {x: 100.44, 200.54},
    {x: 123.45, 678.9},
    {x: 1300.23, 435.81},
    {x: 462.23, 468.37},
    {x: 956.58, 385.38},
];
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种找到最无人居住点的算法.

白色迷你圆圈代表人口和红色Xs标记点,对我来说似乎非常无人居住:

截图

我的目标是运行一个动画,随机将所有这些白色迷你圆圈移动到随机方向,一旦圆圈离开屏幕,它就会被传送到最无人居住的地点,这样大空空间的数量就会减少.

我试图通过计算从每个整数坐标到每个圆的距离之和,然后选择具有最高距离和的坐标来实现这一点.仅此一点似乎已经非常耗费CPU,但我注意到这个算法会使圆圈传送到我的坐标系的边界.所以我还添加了从每个整数坐标到每个边界整数坐标的距离之和.那时,脚本基本上冻结了.所以这绝对不是正确的方法.

我的想法已经不多了.我想我不需要一个完美的算法,而是一个在精度和性能之间保持平衡的算法.最后,我希望能够在1920x1080画布上每秒多次运行该算法,其中大约有80个这样的小环.理想情况下,算法会有一个参数来调整精度,从而调整它使用的CPU时间.

这是我上面提到的方法.我注释掉导致脚本冻结的行:

let circles = [
    {x: 60.44, y: 190.54},
    {x: 103.45, y: 18.9},
    {x: 390.23, y: 135.81},
    {x: 302.23, y: 28.37},
    {x: 56.58, y: 85.38},
]

function getDistance(p1, p2) {
    return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2)
}
function drawCircle(ctx,x,y,r,c) {
    ctx.beginPath()
    ctx.arc(x, y, r, 0, 2 * Math.PI, …
Run Code Online (Sandbox Code Playgroud)

javascript point coordinates coordinate-systems

7
推荐指数
1
解决办法
248
查看次数

在凹/凸多边形内找到有界矩形

我正在寻找一种在凹面或凸面多边形内找到轴对齐矩形的方法.

我一直在寻找网络,我能找到的最接近的解决方案只适合凸多边形,而不是凹多边形.例如 -

在多边形内找到轴对齐的矩形

说实话,我不是一个伟大的数学专家,所以我宁愿找到代码示例或代码库,但我想我可以自己处理一些数学,或者找人来帮助我.

如果解决方案也可以在Java中,那将是非常好的,但也许我太贪心了:P

编辑:回应罗素的评论,我正在添加更多信息.

有界矩形应尽可能大.矩形旨在包含其中的文本.最多1到4个字,支持文本换行.因此,如果它太薄,我会将文本垂直放置而不是水平放置.所以对于宽高比,我想它需要足够包含1-4个单词垂直或水平与自动换行.如果矩形很小,我可以调整文本大小,但最好是文本尽可能大.

另一个很好的要求是,如果多边形的一般方向是对角线,并且当对角线方向对齐时文本会更好,那么矩形不一定与轴对齐,而是与多边形的对角线.我想这个要求让这个变得非常棘手,但是如果你们认为它可能那么它会很棒!

我想我现在已经涵盖了所有的要求.:P

谢谢!

java geometry computational-geometry

5
推荐指数
1
解决办法
4370
查看次数