- •1.Графический модуль
- •2.Инициализация графического режима
- •2.Система координат
- •4.Управление цветом линии
- •5.Заливка области
- •6.Некоторые графические примитивы
- •1.Рисование забора
- •2.Относительные координаты
- •3.Строительство забора
- •4.Круги и эллипсы
- •5. Рисование дуг
- •1.Оператр цикла
- •2.Вложенные циклы
- •3. Генератор случайных чисел
- •4.Инициализация генератора случайных чисел
- •5.Случайное число из промежутка
- •6.Звезды сияют и плывут
- •1.Копирование фрагмента программы
- •2.Изменение диапазона
- •3.Определение условий выбора
- •4.Решение «проблемы штриховки»
- •5.Прверка условия для области
- •6.Дощечки
5. Рисование дуг
Для рисования окружностей, эллипсов и эллиптических дуг используются следующие процедуры:
Команда |
Действие |
Circle(x,y,r) |
Рисование окружности с центром в точке (х.у) радиусом г |
EUipse(x,y,0,360,rx,ry) |
Рисование эллипса с центром в точке (х,у), горизонтальным радиусом гх и вертикальным радиусом гу |
Ellipse(x,y,an,ak,rx,ry) |
Рисование эллиптической дуги, ограниченной углами an и ак (ап<ак) |
Чего ещё не хватает нашей картинке? Романтики! «Светит месяц, светит ясный...» Вот и добавим серпик месяца.
• На небе, естественно, будет всего один месяц, но всё же есть смысл создать отдельную процедуру Luna — так легче будет ориентироваться в программе:
Разбор полётов:
с помощью процедуры Ellipse можно рисовать не только эллипсы, но и эллиптические дуги — для указания начального и конечного углов дуги и служат третий и четвёртый параметры;
команда Ellipse(x,y,239,95,30.30) выводит дугу радиусом 30 пикселей от 239 до 95 градусов:
Замечание.239=95+144.
команда Ellipse(x-20,y-5,275,55,30,30) рисует дугу с центром, смещённым относительно центра первого эллипса на 20 пикселей влево и на 5 — вверх, от 275 до 55 градусов:
• Поместите луну в левый верхний угол.
• Поставьте домик на основу — травку, лужайку, землю...
Наша картинка готова! • Сохраните файл.
Коротко о главном
Команды MoveTo и MoveRel перемещают графический указатель в указанную точку в абсолютных и относительных координатах.
Команды LineTo и LineRel рисуют отрезок от графического указателя до указанной точки (в абсолютных и относительных координатах).
Для рисования отдельных фигур удобно создавать процедуры, в которых используются команды рисования в относительных координатах.
В качестве параметров таким процедурам передаются координаты, цвет, размер фигуры.
Команда Circle выводит окружность.
Команда Ellipse выводит эллипс или эллиптическую дугу.
Типичные ошибки
При рисовании эллипса помните, что углы указываются в градусах, отсчёт идёт против часовой стрелки.
Если необходимо нарисовать дугу, проходящую через нулевой градус, разбивайте её на две части — «до нуля» и «после нуля».
В процедуре, с помощью которой выводятся фигуры в разные места экрана, используйте относительные координаты. Если необходимо использовать процедуры Rectangle, Bar, Circle, Ellipse, указывайте их координаты относительно входных параметров, (например, Circle(x+20,y-50,40)).
Задание к уроку
Задание 1
• Создайте процедуру, рисующую квадрат по заданным координатам левого верхнего угла (х,у) и длине стороны s:
• Создайте программу, выводящую 4 квадрата с вершиной в точке (200,100) и сторонами 20, 40, 60 и 80:
Задание 2
• Создайте процедуру, выводящую круг с центром в точке (х.у), радиусом г, цвета с:
• Создайте процедуру, выводящую два круга с центром в точке (х.у), радиусами г и 2 г, цвета с:
• Создайте процедуру, выводящую на экран эллипс с центром в точке (х.у), вертикальным радиусом г, горизонтальным — в два раза больше вертикального:
• Дополните процедуру так, чтобы у эллипса появились «ушки» радиусом 10:
• Создайте программу, выводящую на экран несколько «ушастых» эллипсов разного размера.
Задание 3
• Создайте процедуру, выводящую на экран правую полуокружность по заданным координатам центра (х,у) и радиусу г:
• Создайте программу, выводящую на экран 5 дуг с общим центром (320,240) и радиусами: первый — 30 пикселей, каждый последующий — на 20 пикселей больше.
Задание 4
• Создайте процедуру, выводящую на экран «птичку» (размер клетки 10 пикселей, координаты выделенной точки (х.у) передаются в процедуру как параметры):
• Добавьте в процедуру Ptichka параметр s, задающий величину клетки:
• Создайте программу, выводящую на экран несколько «птичек» разных размеров.
Задание 5
Создайте процедуру, рисующую квадрат по заданным координатам центра и половине длины стороны. Выведите «коридор» из квадратов:
Задание 6
Создайте процедуру, рисующую окружность по заданным координатам центра и радиусу. Выведите:
• «трубу» из окружностей:
Задание 7
Создайте процедуру, рисующую эллипс по заданным координатам центра и вертикальному радиусу (горизонтальный радиус вдвое превышает вертикальный). Выведите «воронку»:
Задание 8
Создайте процедуру, рисующую дугу по заданным координатам центра, радиусу и значению второго угла (первый угол равен нулю). Выведите «ракушку»:
Задание 9
Создайте процедуру, рисующую снежинку по заданным координатам центра и цвету. Изобразите «снегопад»:
Задание 10
Создайте процедуру, рисующую «облако» по заданным координатам центра, радиусу дуг и цвету. Изобразите «облака»:
Указание. Следует учесть, что при построении дуги Pascal не может перейти через нулевой градус (например, от 270 до 90). Поэтому правую дугу придётся создать из двух частей: от 0 до 90 градусов и от 270 до 360 градусов (см. задание 6).
Задание 11
Создайте процедуру, рисующую символ Инь-Янь по заданным координатам центра, радиусу дуг и цвету. Выведите на экран несколько символов:
Задание 12
Создайте процедуру, рисующую «перо Жар-птицы» по заданным координатам, радиусу дуги и цвету. • Выведите на экран несколько перьев:
Урок №7
Цикл с параметром
Сегодня вы научитесь:
Использовать оператор цикла для организации повторения блока команд.
Использовать генератор случайных чисел.
Рисовать точки.
При выполнении заданий предыдущих уроков вас, наверное, не покидала мысль о том, что многое гораздо проще было бы сделать с помощью цикла. Действительно, вспомните хотя бы забор на нашей картине...
В языке Pascal существует несколько типов циклических конструкций, с одним из которых мы сегодня и познакомимся.