标签: concave

给定非凸多边形中的大量顶点,我如何找到边缘?

我有一组顶点(称为A),我想找到所有边界顶点,使得此边框顶点集是形状的轮廓.

A中的许多顶点都是多余的,因为它们在形状内部,我想摆脱这些顶点.

我的问题类似于找到顶点边(多边形)的最佳算法,但我需要它来处理非凸多边形的情况.

编辑:澄清:下图是凹多边形.这就是我所说的非凸.如果我对它运行凸包算法,它将不会保留多边形的凹陷部分.(除非我弄错了).

凹多边形

我在多边形的边界内和边界上有一组顶点:[[x1,y1],[x2,y2] ...]我想减少集合,使顶点只是形状的边框轮廓.

concave polygons vertices outline

10
推荐指数
1
解决办法
6058
查看次数

如何从凹陷的Delaunay三角剖分中切出三角形?

我正在使用Delaunay来对凹多边形进行三角测量,但它会填充凹陷.如何自动删除多边形边界外的三角形?

polygon delaunay concave triangulation

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

缩放任意多边形

我已经在互联网上搜索了好几天,但一直无法找到一个好的答案(或至少一个对我有意义的答案)似乎应该是一个常见的问题.如何缩放任意多边形?特别是凹多边形.我需要一种能够处理凹(绝对)和自相交(如果可能)多边形的算法.我用来处理简单凸多边形的明显而简单的算法是计算多边形的质心,将该质心平移到原点,缩放所有顶点,并将多边形平移回原始位置.

这种方法不适用于许多(或者全部)凹面多边形,因为质心经常落在多边形之外,因此缩放操作也会导致平移,我需要能够"就地"缩放多边形而不需要最终结果被翻译.

有人知道缩放凹多边形的方法吗?或者也许找到"视觉中心"的方法,它可以用作缩放操作的参考框架?

为了澄清,我在2D空间工作,我想使用"视觉中心"作为参考框架来缩放我的多边形.所以也许另一种提问的方法是,如何找到凹面和/或自相交多边形的视觉中心?

谢谢!

algorithm polygon concave

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

在OpenGL中绘制凹多边形

我有一个凹面多边形我需要在OpenGL中绘制.
多边形定义为形成其外环的点列表,以及定义其内环(排除区域)的列表列表.

我已经可以处理禁区了,所以如何绘制没有内环的多边形的解决方案也会很好.

使用Boost.Geometry的解决方案会很好,因为我已经在我的应用程序中大量使用它.

我需要这个在iPhone上运行,即OpenGL ES(带有固定管道的旧版本).

我怎样才能做到这一点?

opengl-es polygon concave ios

6
推荐指数
1
解决办法
6930
查看次数

opencv找到凹壳

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

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

我对如何做到这一点有了初步的想法.但是在第一步之后我不知道怎么做.我的想法是首先使用kmeans分离图像并找出不同的对象.我成功地完成了它.kmeans之后得到的图像是:对象1面具 对象2对象3面具.

在kmeans之后,我想使用find contour或类似凹形的东西来获得这些形状的轮廓并使用填充孔等功能填充形状.但是,我发现"查找轮廓"不起作用,它会将每个单个像素视为轮廓.

我想的另一种方法是使用插值.但是我不确定它是否有可能存在如此稀疏的分数.有没有人对如何做到这一点有任何想法?我不确定我是否走在正确的道路上,我对任何解决方案持开放态度.

非常感谢!

interpolation opencv concave image-processing contour

6
推荐指数
1
解决办法
3859
查看次数

Bullet 中的凹面碰撞检测

我是 Bullet 新手,如果我的问题对您来说很琐碎,我提前道歉。

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

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

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

CollisionConfiguration bt_collision_configuration;
CollisionDispatcher bt_dispatcher;
BroadphaseInterface bt_broadphase;
CollisionWorld bt_collision_world;

double scene_size = 500;
uint max_objects = 16000;

bt_collision_configuration = new DefaultCollisionConfiguration();
bt_dispatcher = new CollisionDispatcher(bt_collision_configuration);

float sscene_size = (float)scene_size;
Vector3 worldAabbMin = new Vector3(-sscene_size, -sscene_size, -sscene_size);
Vector3 worldAabbMax = new Vector3(sscene_size, sscene_size, sscene_size);
bt_broadphase = new AxisSweep3_32Bit(worldAabbMin, worldAabbMax, max_objects);
bt_collision_world = new CollisionWorld(bt_dispatcher, bt_broadphase, bt_collision_configuration);    [/code] …
Run Code Online (Sandbox Code Playgroud)

c# concave collision-detection bulletphysics

6
推荐指数
1
解决办法
2551
查看次数

如何用凸形形状形成凹形?

我试图绕过只能在SFML c ++库中形成凸形的规则.

要做到这一点,我计划测试给定的顶点,如果是凹的,将顶点分成组,测试每个组的凹度,并重复直到一整套凹形结果看起来就像原始形状放在一起

我想知道的是......

  • 测试形状凹陷的等式是:它是什么以及它是如何工作的?

  • 我如何分割凹形的顶点,以便最终形状尽可能少的凸形?

  • 什么是实现目标的最佳实践?

谢谢!


c++ math graphics concave sfml

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

是否有一种有效\简单的方法在 Direct3d 中绘制凹多边形

我正在尝试使用 c# 和 directx 绘制多边形

我得到的只是一个文件中点的有序列表,我需要在 3d 世界中绘制平面多边形。

我可以加载点并使用三角扇和 drawuserprimitive 绘制凸形。

当多边形非常凹(可能是)时,这显然会导致不正确的结果。

我无法想象我是唯一一个解决这个问题的人(虽然我是 gfx/directx 新手 - 我的背景是 gui\windows 应用程序开发)。

任何人都可以指出一个简单的资源\教程\算法可以帮助我吗?

c# directx polygon concave

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

Libgdx 多边形三角剖分

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

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

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

public void triangulate()
    {
        Vector<float[]> trianglesVertices = new Vector<float[]>();
        ShortArray pointsCoords = new ShortArray();
        EarClippingTriangulator triangulator = new EarClippingTriangulator();

        // Cut in triangles
        pointsCoords = triangulator.computeTriangles(this.getTransformedVertices());

        // Make triangles
        for (int i = 0; i < pointsCoords.size / 6; i++)
        {
            trianglesVertices.add(new float[] {
                    pointsCoords.get(i), pointsCoords.get(i+1),
                    pointsCoords.get(i+2), pointsCoords.get(i+3),
                    pointsCoords.get(i+4), pointsCoords.get(i+5),
            });
            Polygon triangle = new Polygon(trianglesVertices.get(i));
            triangles.add(triangle);
        }

        System.out.printf("Triangulation made %d triangles.\n", pointsCoords.size / 6);
    }
Run Code Online (Sandbox Code Playgroud)

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

我没有找到太多关于 libgdx 的这种截断用途的信息你能帮忙吗?

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

编辑: …

polygon concave triangulation convex libgdx

5
推荐指数
2
解决办法
1713
查看次数

凹面多边形绘图

要使用OpenGL绘制复杂的凹多边形,最好将其镶嵌成三角形,还是使用模板缓冲区?我猜测单个帧的模板缓冲区会更快,但如果多边形不变,则三角测量对于多个帧会更好.但是,我还没有尝试过,所以我不知道.

opengl polygon concave triangulation stencil-buffer

4
推荐指数
1
解决办法
2559
查看次数