ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.06.2019

Просмотров: 92

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Студента ИТ 14-1 Красовского А.В.

Лабораторная работа 4

Определение видимости граней многоугольников

Цель работы: выработка практических навыков определения видимости объектов.

Вариант 11

Индивидуальное задание:

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










Выполнение задания:
Программный код:

(defun ln(t1 t2 ts ang)

(setq anp (+ ang (/ pi 2.0)))

(if (>= anp (* 2.0 pi))

(setq anp (- anp (* 2.0 pi)))

)

(if (< anp 0.0)

(setq anp (- (* 2.0 pi) anp))

)

(setq ans (angle ts pv))

(setq delta (abs (- ans anp)))

(setq ds1 (and (>= ans 0.0) (<= ans (/ pi 2.0))))

(setq ds2 (and (>= ans (* 1.5 pi)) (<= ans (* 2.0 pi))))

(setq dr1 (and (>= anp 0.0) (<= anp (/ pi 2.0))))

(setq dr2 (and (>= anp (* 1.5 pi)) (<= anp (* 2.0 pi))))

(if (and ds1 dr2) (setq delta (+ ans (- (* 2.0 pi) anp)))

)

(if (and ds2 dr1)

(setq delta (+ anp (- (* 2.0 pi) ans)))

)

(print ans) (print anp)

(if (< delta (/ pi 2.0))

(command "_color" 5)

(command "_color" 1)

)

(command "_line" t1 t2 )

(command)

)

(defun vr()

(setvar "blipmode" 0)

(setvar "cmdecho" 0)

(command "_zoom" "_all")

(setq p1 (list 283 35))

(setq p2 (list 325 325))

(setq p3 (list 320 32))

(setq p4 (list 270 7))

(command "_color" 1)

(command "_line" p1 p2 p3 p4 "_c")

(setvar "pdmode" 3)

(setvar "pdsize" 5)

(setq pvs (list 0 0))

(setq st "Y")

(while (= st "Y")

(command "_erase" pvs "")

(setq pv (getpoint "\nViewPoint : ")) (setq pvs pv)

(command "_color" 5)

(command "_point" pv)

(setq dist1 (/ (distance p1 p2) 2)) (setq dist2 (/ (distance p2 p3) 2))

(setq dist3 (/ (distance p3 p4) 2))

(setq dist4 (/ (distance p4 p1) 2)) (setq ang1 (angle p1 p2)) (setq ang2 (angle p2 p3)) (setq ang3 (angle p3 p4)) (setq ang4 (angle p4 p1)) (setq ps1 (polar p1 ang1 dist1))

(setq ps2 (polar p2 ang2 dist2))

(setq ps3 (polar p4 ang3 dist3))

(setq ps4 (polar p1 ang4 dist4))

(ln p1 p2 ps1 ang1)

(ln p2 p3 ps2 ang2)

(ln p3 p4 ps3 ang3)

(ln p4 p1 ps4 ang4)

(setq st (getstring "\nContinue (Y/N) : ")) (setq st (strcase st))

)

)


Результат работы программы:






Вывод: в ходе лабораторной работы были получены практические навыки навыки определения видимости объектов.