对三维空间中的非平面多边形进行三角剖分
本文关键字:多边形 三角剖分 平面 三维空间 | 更新日期: 2023-09-27 18:02:11
我在3D中有一个有序的顶点列表,形成一个多边形。
我希望将这些投影到2D平面上(作为三角测量的一种方法,然后计算它们的面积)。
我不完全确定如何去做这件事,有人有什么建议吗?
编辑:我已经澄清了我遇到的真正问题的标题,并发布了我使用的相当具体的解决方案。在某些情况下,它可能会对某些人有所帮助,即使它有点小众。
我最终采用的解决方案,它远非最佳,但它可能会帮助一些人:
-
从你正在使用的多边形的一个轴对齐的边界框开始(这很简单,通过为你拥有的点集取每个x, y和z值的最大值和最小值来完成)。
-
将你的点投影到3个轴上,你可以从你的边界框中得到这些轴的平面。对于投影的帮助,我建议这样做:投影到一个平面
-
从这里,我们现在有3个二维多边形。检查它们是否凸,这可以通过取多边形中每个角的点积来完成,将其归一化,并将其与其他角进行比较,如果它们不完全相同,则不是凸。
-
如果它们中的任何一个是凸的,选择一个并对其进行三角测量(我使用Triangle.NET)。你从中得到的点的指标将对应于你的原始点,给你一个功能三角测量。
指出:
这不是理想的,它并不总是工作(尽管在很多情况下它会)。特别是如果多边形与自身重叠。
一个更合适但仍不理想的方法是最小边界框,但这要复杂得多。
虽然这不是很明显,但总表面矢量完全由多边形循环指定。简单地选择一个点K,最好是在多边形顶点的凸包内(实际上不是必要的!)但它有助于抑制舍入误差),并以K为中心生成三角测量。单个面向量的和不依赖于k的选择。要投影到一个平面上以生成一个实际的三角曲面,您可以使用F来定义该平面。