Учитывая 2 непересекающихся полигона в 3D, оба видимых лучом вида Oz, определите, какой из них находится впереди. - PullRequest
0 голосов
/ 25 марта 2019

Я строю простую 3D модель для рисования кубоидов в 3D. В этой модели нет специального циклического случая, например, A перед B перед C перед A, или часть A перед B, но часть B перед A.

Теперь, учитывая 2 многоугольника, которые не пересекаются друг с другом в 3D, оба видимы (или частично видимы) по направлению обзора - Оз. Определить, какой из них впереди? Видимо, я не мог использовать minZ или maxZ. Вот контрпример: enter image description here

Ответы [ 2 ]

1 голос
/ 26 марта 2019

В вашем случае это может быть определено как:

Плоскость, которая содержит заданную грань, определяет два полупространства.Другое лицо находится впереди, если все четыре его точки находятся в той же полуплоскости, что и глазная точка.

Помните, что нет простых / очевидный критерий , за исключением случаев, когда ваша модель обладает очень особыми / сильными свойствами.

0 голосов
/ 26 марта 2019

Это относительно просто, когда существует решение: кубоид (правая прямоугольная призма) в проекции находится впереди, если (если и только если) каждая из его видимых граней выглядит как полный параллелограмм.

В приведенном выше примере красный кубоид впереди; две зеленые грани затемнены (не параллелограммы).

...