问题标签 [concave]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
248 浏览

polygon - Subtraction and addition of convex polygons

I have two 2D convex polygons. I want to

  • subtract one from the other one and
  • add one to the other one

The resulting polygon must be either concave or a - better - a set of convex polygons (e.g. triangles).

Do you have any idea how I can accomplish this?

0 投票
1 回答
490 浏览

polygon - 将多边形旋转到最小高度

我需要旋转一个凹多边形以最小化它的高度。我正在考虑找到一条该多边形的最小直径的线,然后将其旋转以使该线与 Y 轴平行。

我的问题是如何找到这样的线?或者,是否有任何其他算法可以旋转多边形以使其高度最小化?

提前致谢。

0 投票
1 回答
144 浏览

algorithm - 在由 (x,y) 点定义的折线中查找双切线

我有代表自由形式对象横截面的`System.Windows.Media.Point3D 集合。

它总是或多或少的形状像“海鸥翅膀”,“M”图案,有两个凸出的凸起,中间有一个“山谷”。它在空间上的方向是任意的,不能保证中央山谷是横截面中唯一的凹陷。

我已经有一种方法可以检测一个保证位于这些山谷之间的点,现在我想找到代表围绕中心点的“双切线”的一对点,即在两点之间经过的线保持所有其他点在同一侧,这也限制了起点。

下图显示了我想要实现的目标:

在此处输入图像描述

我相信叉积是找出三个点是“凹”还是“凸”的好方法,但还没有弄清楚如何执行循环(如何开始,增加什么以及何时停止)。

另外,虽然我可以使用蛮力(不是那么多点),但这肯定会伤害我的感情。

0 投票
2 回答
945 浏览

javascript - Javascript中GPS坐标的凹壳

这是我在阅读了很多关于凹壳和 alpha 形状之后在 stackoverflow 中的第一个问题,但不幸的是我仍然没有找到一个可行的解决方案:(

我的输入是定义 GPS 轨迹的大量 GPS 坐标(纬度、经度)(大约 1000-2000 点)。现在我正在寻找一种方法来测量所有坐标的轮廓周长。

到目前为止,我能够从所有点计算和显示凸包,但凹包的计算到目前为止还没有成功:(

我使用 javascript 进行所有编程并寻找以下任务:输入:所有纬度/经度坐标 (WGS84) 输出:定义凹壳的所有边缘坐标。

我已经找到了关于凹壳、alpha 形状和 delaunay 三角剖分的有趣信息,但不幸的是,所有信息都指的是 2D 平面/X、Y 坐标(如 [5,2][6,7][3,2]),如果我尝试那些带有我的 WGS84 坐标的脚本 -> 无法获得我的点云的凹壳 :(

非常感谢您的帮助!

0 投票
2 回答
2111 浏览

java - 检测多个多边形交叉点(java)

背景:该项目涉及在 GIS 环境中绘制区域。然后我需要找到一组多边形与另一组多边形的交集。我通过将与地图兼容的多边形转换为 Polygon2d ( http://geom-java.sourceforge.net/api/math/geom2d/polygon/package-summary.html ) 来实现这一点,并使用交集方法查找顶点列表对于相交多边形。

问题:这有效,除非在相同的两个多边形之间有多个重叠区域。顶点列表是正确的,但我需要将列表分成每个单独的多边形。

第一个图像是它应该看起来的样子,第二个是实际生成的图像:

(忽略顶部的区域。这是另一个错误的结果)

如何检测和纠正这种情况?

0 投票
1 回答
166 浏览

java - 在 Java 中制作凹面图像

我有一个简短的问题,想知道是否有人有任何想法或库可供我使用。我正在制作一个 java 游戏,需要使 2d 图像凹入。问题是,1:我不知道如何使图像凹入。2:我需要凹面效果有点像后期处理,想想 Oculus Rift。一切正常,但玩家的相机将正常的 2d 图像扭曲为 3d。我是一名大二学生,所以我不知道很复杂的数学来完成这个。

谢谢,-蓝

0 投票
2 回答
1772 浏览

libgdx - Libgdx 多边形三角剖分

好的,所以我有一个多边形(简单但凹形),我试图将其切割成三角形以使其与另一个多边形相撞。

我知道我的多边形是凹的,所以我决定使用 LibGDX EarClippingTriangulator将它切割成三角形。

所以,使用这段代码,我得到了我的三角形顶点:

但是当我尝试绘制我刚刚制作的那些三角形时,它们只是堆叠在 0,0 坐标中。而且,所有三角形看起来几乎相同是否正常,我的意思是它们都有相同的方向?

我没有找到关于这个用于 libgdx 的 trangulation 的太多信息你能帮忙吗?

(对不起我的英语我是法国人,对不起没有照片,我在这里太年轻了)

编辑:这是我的多边形(CCW)

EDIT2:现在我有足够的点来向您展示多边形

在此处输入图像描述

0 投票
1 回答
6532 浏览

opencv - opencv找到凹壳

我在图像中显示了一组离散点,如下所示 离散掩模

我想重建或上采样(我不确定描述它的正确方法是什么)图像,以便结果图像如下所示后处理面膜。它不需要与示例图像完全相同,但主要思想是填充原始图像。

我对如何做有一个初步的想法。但是我不知道第一步之后该怎么做。我的想法是首先使用 kmeans 分离图像并找出不同的对象。我已经成功地做到了。kmeans 之后的结果图像是对象 1 蒙版 对象 2对象 3 掩码

在 kmeans 之后,我想使用 find contour 或类似 concave 的方法来获取这些形状的轮廓,并使用诸如填充孔之类的功能来填充形状。但是,我发现“查找轮廓”不起作用,它会将每个单个像素视为一个轮廓。

我在想的另一种方法是使用插值。但我不确定如此稀疏的点是否可行。有人对如何做到这一点有任何想法吗?我不确定我是否走在正确的道路上,我愿意接受任何解决方案。

非常感谢!

0 投票
2 回答
642 浏览

python - 填充表示为二进制矩阵的凹多边形

在我的任务中,我将凹多边形表示为 1 和 0 的矩阵,其中 1 表示给定点属于该多边形。例如,以下是一个简单的正方形和一个 u 形多边形:

但是,有时我会得到不完整的表示,其中:(1)包括所有边界点,以及(2)缺少一些内部点。例如,在下面的 u 形多边形的放大版本中,位置 (1,1), (1,6), (3,1), ..., (3,6)* 的元素是“未填充的”。目标是填充它们(即,将它们的值更改为1)。

你知道在 Python/NumPy 中是否有一种简单的方法可以做到这一点?

*(row, column),从左上角开始计数

0 投票
1 回答
2746 浏览

c# - Bullet 中的凹面碰撞检测

我是 Bullet 新手,所以如果我的问题对你来说是微不足道的,我提前道歉。

我需要从 .stl 文件中加载一组凹三角形网格并执行碰撞检测。对象可以由用户移动。从用户手册中,我读到:“凹三角形网格:对于静态世界环境,表示静态三角形网格的一种非常有效的方法是使用 btBvhTriangleMeshShape。”

因此,我的问题是: - Bullet 可以检测使用 BvhTriangleMeshShape 建模的凹面网格对象之间的碰撞吗?- contactTest 和 CollisionWorld::PerformDiscreteCollisionDetection() 之间的真正区别是什么 - 我是否需要为凹面碰撞检测指定不同的碰撞算法?

我正在使用BulletSharp维护的 Bullet 的 C# 包装器。我所做的是设置我的子弹环境:

并将我的 CollisionObjects 加载为BvhTriangleMeshShape.

为了检测碰撞,我使用了:

这段代码的结果是ContactResultCallback::NeedsCollision每次两个边界框相交时都会调用该函数,但如果 2 个网格相交,则找不到流形。

其次:

使用这个二级代码,根本找不到流形。