Метод Робертса

Используется самостоятельно, либо в сочетании с другими методами.Служит для удаления не лицевых граней выпуклых многогранников.

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

Берем Z координату внешней нормали, если она положительная, грань не видна, иначе – видна. Векторное произведение двух векторов вычисляется по формуле

,

откуда z = (x3x1)(y2y1) – (y3y1)(x2x1).Если результат положительный, грань не видна, иначе – видна.

В отличие от универсальных алгоритмов узкоспециализированный алгоритм удаления невидимых граней выпуклых тел позволяет производить вычисления гораздо быстрее. Он работает для центральной перспективной проекции. Рассмотрим работу этого алгоритма на примере как изображено на рис. 38.

Рис. 38. Пересечения прямой AB с плоскостями граней призмы.

Пусть наблюдатель находится в точке A. Выберем точку B, которая заведомо является внутренней для выпуклой фигуры, в данном случае призмы. Выберем некоторую грань, про которую мы хотим узнать видима она из точки A, или не видима. Построим плоскость, в которой лежит выбранная грань. Найдем точку пересечения плоскости и прямой, которая образована отрезком AB. Если точка пересечения прямой и плоскости лежит внутри отрезка AB, то делаем вывод, что данная грань видима. Если точка пересечения находится вне отрезка AB, то грань не видима. В случае, когда прямая и плоскость параллельны, считаем что грань не видима.