Алгоритм сортировки полигонов и объектов по дальности

Есть 2 проблемы. Мне нужен алгоритм сортировки полигонов и объектов по дальности (далее 1 и 2 - номера вопросов/проблем):

По условию для алгоритма дано:

  1. Cписок полигонов в 3-х мерном пространстве. Пример:
list = [
    [[0, 0, 0], [5, 0, 5], [5, 5, 5]],
    ...
] 

*все координаты даны в последовательности x y z.

И мне нужно отсортировать эти полигоны по дальности так так, чтобы при отрисовке они накладывались друг на друга и создавалось ощущение полноценного 3д объекта, а не рандомно нарисованных полигонов.

  1. Cписок из списков таких же полигонов (список объектов) и мне нужно отсортировать эти объекты (списки полигонов) по дальности так, чтобы он накладывались друг на друга по очереди и задние не перекрывали ближние.

Помогите?


Ответы (1 шт):

Автор решения: CrazyElf

Ну вот вам пример, всё же просто:

import numpy as np

polygons = np.random.randint(10, size=(10, 3, 3)).tolist()
polygons.sort(key=lambda poly: sum(z for (x,y,z) in poly))
print(polygons)

Я здесь сортирую по сумме координат z полигонов, входящих в объект.

→ Ссылка