Вывод на экран изображение поверхности z=f(x,y) с удалением невидимых линий

Страницы работы

4 страницы (Word-файл)

Фрагмент текста работы

РАСЧЕТНО-ГРАФИЧЕСКОЕ ЗАДАНИЕ 3

Задание. Вывести на экран изображение поверхности z=f(x,y) с удалением невидимых линий.

Варианты заданий. Удаление невидимых линий осуществляется либо с использованием алгоритма плавающего горизонта (M1), либо с использованием метода художника (М2). Рассматривается либо центральная проекция (Р1), либо параллельная проекция (Р2). Поверхность задается одной из следующих формул:

Z1.

Z4.

Z7.

Z2.

Z5.

Z8.

Z3.

Z6.

Z9.

Получаем следующие варианты:

1) M1-P2-Z1

6) M1-P2-Z6

11) M2-P1-Z2

16) M2-P1-Z7

21) M2-P2-Z4

2) M1-P2-Z2

7) M1-P2-Z7

12) M2-P1-Z3

17) M2-P1-Z8

22) M2-P2-Z5

3) M1-P2-Z3

8) M1-P2-Z8

13) M2-P1-Z4

18) M2-P2-Z1

23) M2-P2-Z6

4) M1-P2-Z4

9) M1-P2-Z9

14) M2-P1-Z5

19) M2-P2-Z2

24) M2-P2-Z7

5) M1-P2-Z5

10) M2-P1-Z1

15) M2-P1-Z6

20) M2-P2-Z3

25) M2-P2-Z8

ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ

Задание. Вывести на экран изображение поверхности z=sin(x2 +y2) в центральной проекции, используя алгоритм плавающего горизонта для удаления невидимых линий.

Решение. Точки (x,y,z) вычерчиваемой части поверхности принадлежат некоторому прямоугольному параллелепипеду xmin £ x £ xmax, ymin £ y £ ymax, zmin £ z £ zmax. Точка наблюдения (x,y,zV) удовлетворяет условиям xV ³ xmax, y³ ymax, z³ zmax. Функции ex и ey переводят мировые координаты (x,y,z) в координаты проекции (x¢,y¢). Плоскость проекции имеет единичный вектор нормали u = (cosa, sina, 0) и находится на расстоянии d от точки (xV, y,zV) (см. рассмотренный ранее пример 3.3 на центральную проекцию). Координаты центральной проекции вычисляются по формулам:

x'=-d((x-xV)(-sina)+(y-yV)cosa)/((x-xV)cosa+(y-yV)sina);

y'=-d(z-zV)/((x-xV)cosa+(y-yV)sina).

Вычислим наибольшие и наименьшие координаты отображаемого параллелепипеда

exmin = ex(xmax ,ymin ,zmin), exmax = ex(xmin, ymax, zmax),

eymin  = ey(xmax, ymax, zmin), eymax = ey(xmin, ymin, zmax).

Прямоугольник exmin £ ex £ exmax, eymin £ ey £ eymax будет окном, отображаемым на область вывода, состоящую из точек, имеющих целые координаты

X = (ex-exmin)*getmaxx()/(exmax-exmin),

Y = (ey-eymin)*getmaxy()/(eymax-eymin).

Рассматривается прямоугольная сетка в плоскости Oxy с шагом hx = (xmax-xmin)/nx по x, и hy = (ymax  -ymin )/ny - по y .

Каждому прямоугольнику

Похожие материалы

Информация о работе