如何在顶点(或其他一些距离测量)按特定值对一堆多边形/多面体进行排序

时间:2009-04-14 12:03:21

标签: c sorting geometry

我正在开发一个项目,该项目将使用大型数据集(包括2D和3D),我将变成三角形或四面体,以便渲染它们。

我还将对这些tris / tets进行计算。每个计算使用哪个tris / tets取决于其顶点的最大值和最小值。

所以我需要按照它们最有价值的顶点排序tris / tets。

-

我尝试过quicksort和二进制插入排序。到目前为止,Quicksort提供了最快的解决方案,但由于数据集的大小,它仍然很慢。

在创建tris / tets时,我正在考虑一个桶/地图排序;为遇到的每个最大值顶点添加一个桶,添加指向三角形的指针,这些三角形都将该值作为其最大值顶点的值。

这种方法应该是线性的,但显然需要更多的内存。这不是问题,但我选择的编程语言是c。我并不完全确定如何编写这样的东西。

所以我的问题是,你将如何以这样的方式获得三角形/ tets,你可以迭代它们,从三角形中,其顶点具有3个顶点的最大值是最大值的顶点整个数据集,一直到具有最小最大顶点值的三角形? :)

2 个答案:

答案 0 :(得分:0)

您是否只能在生成它们时将它们存储在binary search tree中?这将使它们保持有序且易于搜索(O(log(n))用于插入和查找)

答案 1 :(得分:0)

您可以根据priority queue使用heap data structure。这也应该让你O(log(n))进行插入和提取。