Построение многоугольников и многогранников, страница 9

1.  y + z > 1, x ≥ 0, y ≥ 0, z ≥ 0 (видимая грань p1p2p3), список граней: p0p p2, p0p2p3, p0p1p3, qp1p2, qp2p3, qp3p1.

2.  y + z ≤ 1, x < 0, y ≥ 0, z ≥ 0 (видимая грань p0p2p3), список граней: p0p1p3, p0p2p3, p1p2p3, p0p2q, p0p3q, p2p3q.

3.  y + z ≤ 1, x ≥ 0, y < 0, z ≥ 0 (видимая грань p0p1p3), список граней: p0p1p2, p0p2p3, p1p2p3, p0p1q, p0p3q, p1p3q.

4.  y + z ≤ 1, x ≥ 0, y ≥ 0, z < 0 (видимая грань p0p1p2), список граней: p0p1p3, p0p2p3, p1p2p3, p0p1q, p0p2q, p1p2q.

5.  y + z > 1, x ≤ 0, y ≥ 0, z ≥ 0 (видимые грани p0p2p3 и p1p2p3), список граней: p0p1p2, p0p1p3, p1p2q, p0p2q, p0p3q, p1p3q.

6.  y + z > 1, x ≥ 0, y < 0, z ≥ 0 (видимые грани p0p1p3 и p1p2p3), список граней: p0p1p2, p0p2p3, p0p1q, p1p2q, p2p3q, p0p3q.

7.  y + z > 1, x ≥ 0, y ≥ 0, z ≤ 0 (видимые грани p0p1p2 и p1p2p3), список граней: p0p1p3, p0p2p3, p0p1q, p1p3q, p0p2q, p2p3q.

8.  y + z < 1, x ≤ 0, y ≤ 0, z > 0 (видимые грани p0p1p3 и p0p2p3), список граней: p0p1p2, p1p2p3, p0p1q, p1p3q, p0p2q, p2p3q.

9.  y + z < 1, x ≤ 0, y > 0, z ≤ 0 (видимые грани p0p1p2 и p0p2p3), список граней: p0p1q, p1p2q, p2p3q, p0p3q.

10.  y + z < 1, x > 0, y ≤ 0, z ≤ 0 (видимые грани p0p1p2 и p0p1p3), список граней: p0p2p3, p1p2p3, p0p2q, p0p3q, p1p2q, p1p3q.

11.  y + z > 1, x < 0, y < 0, z ≥ 0 (все грани, кроме p0p1p2, видимые), список граней: p0p1p2, p0p1q, p0p2q, p1p2q.

12.  y + z > 1, x < 0, y ≥ 0, z < 0 (все грани, кроме p0p1p3, видимые), список граней: p0p1p3, p0p1q, p0p3q, p1p3q.

13.  y + z > 1, x ≥ 0, y < 0, z < 0 (все грани, кроме p0p2p3, видимые), список граней: p0p2p3, p0p2q, p0p3q, p2p3q.

14.  x < 0, y < 0, z < 0 (все грани, кроме p1p2p3, видимые), список граней: p1p2p3, p1p2q, p1p3q, p2p3q.

15.  y + z ≤ 1, x ≥ 0, y ≥ 0, z ≥ 0 (точка q принадлежит тетраэдру), список граней: p0p1p2, p0p1p3, p0p2p3, p1p2p3.

Изображение выпуклого тела. Пусть задано выпуклое тело с помощью координат вершин и списка многоугольников, которые служат гранями этого выпуклого тела. Рассмотрим систему координат (XYZ), выражающихся с помощью параллельной проекции через мировые координаты (xyz). В этой системе координат плоскость OXY будет совпадать с плоскостью экрана, а ось OZ будет перпендикулярна плоскости экрана (переход от координат (XY) к экранным производится с помощью масштабирования.)

Система координат (XYZ) называется проекционной. В этой системе координат вершины выпуклого тела (xiyizi) будут иметь некоторые координаты (XiYiZi).

Для каждой грани запишем уравнение плоскости в проекционной системе координат, содержащей эту грань akX + bkY + ckZ + dk = 0, где k – номер грани, 1 ≤ k ≤ K. Предположим, что вектор нормали N = (akbkck) направлен наружу выпуклого тела. Тогда если Z-компонента вектора N, равная ck, не больше нуля, то данная грань невидима. Если же ck > 0, то грань видима. Таким образом, получаем схему алгоритма вывода ребер видимых граней выпуклого тела.