Графика: функция рисования равностороннего треугольника - Lisp
Формулировка задачи:
Еще раз добрый вечер. HomeLisp-е
написать функцию, запрашивающую у пользователя сторону треугольника и отрисовывающую равносторонний треугольник с заданной длиной стороны и левым нижним углом в точке (5,0)
Решение задачи: «Графика: функция рисования равностороннего треугольника»
textual
Листинг программы
- (defun triangle nil
- (let ((d 0))
- (loop
- (try
- (progn
- (setq d (str2flo (ask "Задайте длину стороны")))
- (when (<= d 1E-15) (raiseerror ""))
- (return t))
- except
- (say "Вы ошиблись!")))
- (grwCreate 'w 200 200 "Рисуем треугольник" _WHITE)
- (grwScale 'w -50 50 -50 50)
- (grwline 'w 0 -50 0 50 _NAVY)
- (grwline 'w -50 0 50 0 _NAVY)
- (grwSetParm 'w 3 1 _RED _WHITE)
- (grwShow 'w)
- (grwline 'w 5 0 (+ 5 d) 0 _RED)
- (grwline 'w 5 0 (+ 5 (* 0.5 d)) (* d (sin (/ _pi 3))) _RED)
- (grwline 'w (+ 5 d) 0 (+ 5 (* 0.5 d)) (* d (sin (/ _pi 3))) _RED)
- (loop
- (when
- (= 27 (grwInkey 'w 200)) (return t)))
- (grwHide 'w)
- (grwDestroy 'w)
- ))
Объяснение кода листинга программы
- Создание функции рисования треугольника (defun triangle nil).
- Ввод длины стороны треугольника с помощью функции ask и преобразование в число с плавающей точкой (str2flo).
- Проверка на корректность ввода длины стороны (когда (<= d 1E-15) (raiseerror ``))
- Создание окна для графического интерфейса (grwCreate).
- Изменение размеров окна (grwScale).
- Рисование первых двух сторон треугольника (grwline).
- Установка параметров для третьей стороны треугольника (grwSetParm).
- Отображение треугольника (grwShow).
- Рисование третьей стороны треугольника (grwline).
- Проверка на нажатие клавиши для выхода из программы (grwInkey).
- Отображение треугольника (grwShow).
- Скрытие треугольника (grwHide).
- Уничтожение окна (grwDestroy).
- Конец функции (return).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д