我正在使用Unity,但是解决方案应该是通用的。我将从鼠标点击中获得用户输入,鼠标点击定义了一个封闭的不规则多边形的顶点列表。顶点将定义平面3D网格的外边缘。
为了按程序生成统一的网格,我必须指定所有顶点以及它们如何连接以形成三角形。
所以,对于凸多边形来说,这很简单,我只需要制作顶点为1,2,3,然后是1,3,4的三角形,形成类似孔雀尾巴的形状。
但是对于凹多边形来说就不那么简单了。有没有找到内部三角形的有效算法?
有一个用于对凹多边形进行三角剖分的社区脚本,但我个人没有使用过。作者声称它既适用于3D点,也适用于2D点。
如果我想把问题限制在二维,我过去使用过的一个技巧是使用主成分分析来找到我的三维数据中变化最大的两个轴,并使它们成为我的“X”和“Y”。
我实现了如下的削耳算法:
注意事项:
您可以使用受约束的Delaunay三角剖分(实现起来并不简单!)。Triangle和CGAL中提供了良好的库实现,提供了高效的O(n*log(n))
实现。
如果顶点集很小,也可以使用耳朵裁剪算法,尽管它不一定会给出Delaunay三角剖分(通常会生成次优三角形),并且运行在O(n^2)
中。不过,自己实现是相当容易的。
由于输入顶点存在于三维空间的平面上,您可以通过投影到平面上,计算二维三角剖分,然后将相同的网格拓扑应用于三维顶点集来获得二维问题。
我想创建一个多边形从形状点。
我有一个多边形的顶点列表,我试图在一个较大的三角形内创建一个等边三角形网格,以输入多边形的当前顶点为中心。 内部三角形边的大小由确定,它将容器边划分为相等的部分。最后,我想在Python的列表中存储所有这些三角形(包括原来的大三角形)顶点的坐标。 我提出的一个方法是: null
现在,我们的WebGL包装器已经构建好,让我们在屏幕上绘制一个简单的三角形,来创建我们的第一个WebGL应用。它将作为创建更复杂的3D模型的典型步骤的良好基础。本节,我们将介绍位置缓冲区的概念,它其实就是用来定义3D模型的位置和形状的顶点的数组。 图9-1 创建三角形平面 操作步骤 按照以下步骤使用WebGL渲染一个2D三角形: 1. 链接到glMatrix库和WebGL包装器: <script
问题内容: 我有一组描述不规则多边形区域边界的点: 如何从多边形内部均匀选择一个随机点? 问题答案: 我将分三个步骤进行操作: 创建一个三角形列表,这些列表覆盖与给定的多边形相同的区域。如果多边形是凸面的,则比较容易,因为您可以让所有三角形共享一个共同的顶点。如果不能保证多边形是凸的,则必须找到更好的多边形三角剖分技术。这是相关的维基百科文章。 随机选择要使用的三角形,并按其面积加权。因此,如果三
我的geodataframe如下所示: 我可以在“几何体”列中看到点列表,但我想将这些点拉出并放入列表中。例如,在pandas中,您可以执行类似df['column']的操作。到列表()。但是,在尝试此操作时,我得到一个错误: 你知道我如何去掉“多边形”名称,直接得到组成该多边形的点的列表吗?说清楚,我不想要多边形的外部或边界,我想要边界内的所有点。
我正在寻找一种方法来创建一组多边形(rechtangles),沿着一条线在多个多边形中创建一组多边形(rechtangles),并将其水平隔开,如图所示。 我尝试生成点并将其用作多边形的中点,但问题是,通过创建等间距的点光栅,除了180度之外,不可能以任何其他方向旋转。 例子 给出了一个多多边形形状的对象和由宽度和高度以及每个多边形之间的垂直和水平间距定义的多边形。多边形应仅放置在多多边形内,且不