Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
“Московский государственный университет приборостроения и информатики”
Филиал Сергиев Посад специальность 230101
Кафедра ИТ4 “Персональные компьютеры и сети”
Дисциплина компьютерная графика
Пояснительная записка
к курсовому проекту на тему:
“программа рисования многоугольника”
Студент
Группа ИТ4-2006-01Д шифр 06022
Проект защищён на оценку
Руководитель проекта(работы)
Члены комиссии
Сергиев Посад 2009
Cодержание:
Постановка задачи. 3
Описание алгоритмов процедур и функций. 4
Описание интерфейсной части программы. 6
Листинг программы. 9
Создать программу, которая будет рисовать многоугольник, лучи от одной вершины многоугольника к остальным его вершинам, закрашивать многоугольник и накладывать текстуру.
Procedure Draw_Pixel(x, y: integer; R, G, B: byte);
Эта процедура рисует точку на форме.
Procedure Draw_Line(x1, y1, x2, y2: integer);
Эта процедура рисует одну линию путем передачи координат точки процедуре draw_pixel. Таким образом линия состоит из множествава точек расположенных друг рядом с другом.
Procedure Draw_TriangleZakr(x1, y1, x2, y2, x3, y3: integer);
Эта процедура закрашивает треугольники, из которых состоит многоугольник. Треугольник закрашивается линиями.
Procedure Draw_Texture(x1,y1,x2,y2: integer);
Эта процедура накладывает рисует текстуру.
Procedure Draw_Mnogougolnik(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: integer);
Эта процедура рисует многоугольник на форме. Для рисования необходимо отсортировать вершины в нужном порядке и передать координаты отсортированных вершин процедуре draw_line.
Изначально определяется середина фигуры относительно оси Y. После этого точки делятся на те, которые лежат ниже середины по оси Y и на те, которые лежат на ней и выше неё.
Эти точки записываются в два массива.
Далее происходит их сортировка по оси X. Вершины, которые лежат в массиве нижних вершин сортируются по убыванию, вершины из массива верхних вершин – по возрастанию.
После этого из этих массивов вершины переписываются в третий массив, в котором они находятся в упорядоченном и отсортированном виде.
Рrocedure Draw_MnogougolnikZakr(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: integer);
Закраска фигуры производится путем закрашивания треугольников, координаты которых передаются в процедуру draw_trianglezakr. Координаты треугольников выбираются из шести вариантов, в зависимости от номера центральной вершины, из которой они рисуются.
Вариант выбирается путем сравнения вершин из упорядоченного массива(в этот массив вершины записываются также как в предыдущей процедуре) с центром фигуры. Для этого находится центр фигуры по оси Х и по оси Y. Определяется степень удаление каждой вершины от этого центра.
Выбирается тот вариант, в котором центральная вершина – это одна из наиболее приближенных вершин к центру фигуры.
Procedure Draw_luchi(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: integer);
Эта процедура рисует лучи, которые идут от одной из вершин наиболее приближенных к центру фигуры к остальным вершинам.
Выбор центральной вершины осуществляется путем сравнения координат вершин с координатами центра фигуры.
Далее координаты передаются в процедуру draw_line.
procedure Draw_MnogougolnikText(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: integer);
Эта процедура передает координаты треугольников, из которых состоит многоугольник, для наложения текстуры процедуре put_texture.
Выбор варианта с координатами треугольников происходит аналогично выбору варианта в процедуре Draw_MnogougolnikZakr.
procedure Put_Texture(x1: Integer; y1: Integer; x2: Integer; y2: Integer; x3: Integer; y3: Integer);
Эта процедура передает координаты и текстуру для рисования процедуре draw_texture.
Для работы программы необходимо ввести координаты, либо выбрать один из готовых вариантов.
При нажатии на кнопку «рисование» будет нарисован шестиугольник.
При нажатии на кнопку «лучи» будут нарисованы лучи.
При нажатии на кнопку «закрасить» многоугольник закрасится.
При нажатии на кнопку «текстура» на многоугольник будет наложена заданная текстура.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Risovanie: TButton;
Variant_1: TButton;
Zakraska: TButton;
Ochistka: TButton;
Variant_2: TButton;
Variant_3: TButton;
Luchi: TButton;
Variant_5: TButton;
Variant_4: TButton;
Tekstura: TButton;
procedure RisovanieClick(Sender: TObject);
procedure Variant_1Click(Sender: TObject);
procedure ZakraskaClick(Sender: TObject);
procedure OchistkaClick(Sender: TObject);
procedure Variant_2Click(Sender: TObject);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.