Я работаю над проектом, который будет использовать большие наборы данных (как 2D, так и 3D), которые я буду превращать в треугольники или тетраэдры для их рендеринга.
Я также буду выполнять расчеты для этих трис / тет. Какие трис / тет используются для каждого вычисления, зависят от наибольших и наименьших значений их вершин.
Так что мне нужно отсортировать трис / тетс в порядке их наибольшей ценности.
-
Я пробовал быструю сортировку и сортировку бинарных вставок. До сих пор Quicksort предлагает самое быстрое решение, но оно все еще довольно медленное из-за размера наборов данных.
Во время создания трис / тетс я размышлял по типу ведра / карты; блок для каждой из встречающихся вершин с наибольшим значением, добавляя указатели на треугольники, у которых все это значение равно значению их вершины с наибольшим значением.
Этот подход должен быть линейным во времени, но, очевидно, требует больше памяти. Это не проблема, но мой язык программирования - c. И я не совсем уверен, как бы я решил написать такую вещь.
Итак, мой вопрос к вам: как бы вы получили треугольники / теты таким образом, чтобы вы могли перебирать их, из треугольника, вершина которого с наибольшим значением из 3 его вершин, является самой значимой весь набор данных, вплоть до треугольника с наименьшим наибольшим значением вершины? :)