2016-11-16 5 views
0

позволяет предположить, следующие три строки представляют собой вершины треугольника в 3D-пространстве после преобразования проекции (это только произвольные значения только для примера):выяснить треугольники внутри плоскости проекции

0.0000000 0.0000000 0.9797980 
0.1191754 0.0000000 0.9797980 
0.0000000 0.1191754 0.9797980 

Если плоскость проекции представляет собой квадрат длины 2 (верхняя левая точка (-1,1) и нижняя правая точка (1, -1), а я уже выполнил обрезание по оси z, координаты z будут находиться в пределах [-1 , 1]. Итак, как я могу определить треугольники, которые полностью выходят за пределы области проекции, как изображение ниже? Будут ли они иметь все свои значения x, y каждой вершины> 1 или < -1?

ответ

0

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

-2 -2 0.5 
2 2 0.5 
2 -2 0.5 

Хотя оба, х и у компонентов находятся вне [-1, 1] треугольник все еще покрывает половину экрана.

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

Если допустимо классифицировать некоторые треугольники как видимые, хотя они и не указаны, вы можете проверить, находятся ли все точки за пределами той же стороны видимой области. Например, если все точки имеют x < -1 и так далее.

Если вам действительно нужна идеальная классификация, возможно, вариант Sutherland–Hodgman algorithm. Когда выходной список пуст, треугольник полностью невидим.

+0

Я сделал небольшое изменение @BDL – user5411115

+0

Ответ остается неизменным. Здесь z-координата здесь не имеет значения. Единственное, что можно легко сказать, это то, что треугольник определенно будет виден, когда одна из точек находится внутри [-1, 1] на обеих осях. Но для всего остального нет тривиального решения. – BDL

+0

Об изображении: В этом случае первый подход моего ответа будет работать. Но, например, [0,3], [3,3], [3,0] были бы неправильно классифицированы как видимые, хотя это не так. – BDL