c# - 三角形列表的路径 (.NET/C#)

标签 c# .net system.drawing

给定一条表示为二维点数组的路径:

Point[] path = new Point[4]
{
    new Point(0,0),
    new Point(10,0),
    new Point(10,10),
    new Point(0,10),
};

...在这里,一个盒子。

将其转换为要在 3D 应用程序中使用的三角形列表(填充路径)的最佳方法是什么?鉴于这只是一个简单的示例,实际路径可能相当复杂。框架中是否已经有任何东西,也许是 System.Drawing 或 WPF 中的东西可以帮助解决这个问题?

编辑:(在塞缪尔的评论之后) 理想情况下,我希望能够同时处理凸多边形和凹多边形,否则图形将不得不手动由许多凸多边形组成。

最佳答案

这取决于路径由什么组成,以及它是如何创建的。

如果它始终是一个凸多边形,您可以很容易地创建一个三角形扇形来填充该区域。

如果它不是凸多边形,您很可能需要使用某种形式的三角测量来填充路径。那里有很多选择。大多数示例代码是用 C 或 C++ 编写的,而不是用 C# 编写的,但这可能会有所帮助:

http://local.wasp.uwa.edu.au/~pbourke/papers/triangulate/morten.html

基本思想是填充外边界,三角测量例程将传回 3D 应用程序所需的正确三角形索引。

框架中没有任何东西可以为您做这件事。

关于c# - 三角形列表的路径 (.NET/C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638857/

相关文章:

类似于 Masonry 的 C# 网格布局库

c# - Bitmap.LockBits 错误 "Parameter is not valid"当位图是一定大小时?

c# - Bitmap.Save 保存一个图标实际上保存了一个.png

c# - 我可以用什么来确定相似的词或关键词?

c# - 这是.Net 反射中的错误吗?

c# - 在后端更改 CSS

c# - 用于远程 Web 服务的 Windows 虚拟磁盘

c# - 获取 RotateTransform 的结果大小

c# - StructureMap 生命周期范围

c# - 如何使数据绑定(bind)控件刷新通过反射更改的属性值?