Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
三角形列表的路径(.NET/C#)_C#_.net_System.drawing - Fatal编程技术网

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

三角形列表的路径(.NET/C#),c#,.net,system.drawing,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中已经有什么东西可以帮助您

给定表示为二维点阵列的路径:

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语言,但是这可能有帮助:

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


框架中没有任何东西可以为您做到这一点。

路径是凸多边形吗?如果它是容易的,否则它将是相当困难的。理想情况下,我希望能够处理凹多边形和凸多边形。罗伯,请看下面我的答案。它可以同时处理这两个问题,但需要付出更多的努力。不过,处理退化多边形需要格外小心(在大多数简单算法之上)。