Разработка функций, рисующих на экране незакрашенный и закрашенный параллелограммы

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

Содержание работы

Условие задачи:

Разработать функции, рисующие на экране следующие геометрические фигуры:

– незакрашенную фигуру,

– закрашенную фигуру,

Определить класс, реализующий понятие геометрической фигуры в графической системе.

Включить в разработанный класс функции

– устанавливающие и изменяющие геометрические и графические характеристики фигуры (set-функции);

– возвращающие геометрические и графические характеристики фигуры (get-функции);

– рисующую фигуру на экране;

– обеспечивающие сохраняемость объекта: сохранение набора атрибутов объекта класса в файле и считывание его из файла.

Описание класса parallelogram:

Скрытые параметры:

dx,dy – целочисленные переменные необходимые для вычисления координат недостающих точек;

fillcolor – целочисленная переменная, определяющая цвет заливки;

linecolor – целочисленная переменная, определяющая цвет контура;

tolshina – целочисленная переменная, определяющая толщину линий контура;

linestyle – целочисленная переменная, определяющая вид линий контура;

fillstyle – целочисленная переменная, определяющая метод заливки;

count() – функция, вычисляющая координаты недостающих точек.

Параметры,  доступные пользователю:

point[4] – массив типа pointtype, содержащий координаты точек параллелограмма;

center – переменная типа pointtype, содержащая координаты точки пересечения диагоналей параллелограмма;

parallelogramm() – конструктор;

set_coordinates(int x1,int y1,int x2,int y2,int x3,int y3) – функция, задающая координаты двух точек и точки пересечения диагоналей;

draw() – функция, рисующая фигуру;

ok() – Возвращает 1, если фигура помещается в пределы экрана, 0 - в противном случае.

set_fillcolor(int c) – задает цвет заливки;

set_linecolor(int c) – задает цвет контура;

set_tolshina(int t) – задает толщину линий контура;

set_linestyle(int ls) – задает вид линий контура;

set_fillstyle(int fs) – задает метод заливки;

get_fillcolor() – возвращает цвет заливки;

get_linecolor() – возвращает цвет контура;

get_tolshina() – возвращает толщину линий контура;

get_linestyle() – возвращает вид линий контура;

get_fillstyle() – возвращает метод заливки;

drawfill() – рисует закрашенную фигуру;

findinside(parallelogramm *obj) – возвращает 1, если фигура obj вложена в данную фигуру, 0 – в противном случае.

readfromfile(char *filename) – считывает параметры фигуры. Возвращает 1, если файл существует, 0 – в противном случае.

savetofile(char *filename) – сохраняет параметры фигуры в файл.

Алгоритм:

Функция count():

x0,y0 – координаты первой точки параллелограмма;

x1,y1 – координаты второй точки параллелограмма;

x,y – координаты точки пересечения диагоналей параллелограмма;

x2,y2,x3,y3 – координаты недостающих точек;

dx=x-x0;

dy=y-y0;

x2=x+dx;

y2=y+dy;

dx=x-x1;

dy=y-y1;

x3=x+dx;

y3=y+dy.

Функция ok():

Для каждой точки:

Если x<0 или x>479 возвращаем 0;

Если y<0 или y>639 возвращаем 0;

Возвращаем 1.

Функция findinside(parallelogramm *obj):

x0,y0,x1,y1,x2,y2,x3,y3 – координаты точек данного параллелограмма;

objX,objY – координаты точек параллелограмма obj;

ldina1=;

ldina2=;

ldina3=;

p=;

S=2;

Для каждой точки параллелограмма obj:

od1=;

            od2=;

            p=;

s=;

od3=;

p=;

s=s+;

od1=;

p=;

s=s+;

p=;

s=s+;

Если S-s<0 возвращаем 0;

Возвращаем 1.

Текст программы:

Модуль Paral.h

#if !defined( _graphics_H)

#include <graphics.h>

#endif

#if !defined( _stdio_H)

#include <stdio.h>

#endif

#if !defined( _stdlib_H)

#include <stdlib.h>

#endif

#if !defined( _conio_H)

#include <conio.h>

#endif

#if !defined( _math_H)

#include <math.h>

#endif

double sqr(double t)

{

return t*t;

}

class parallelogramm

{

int dx,dy;

int fillcolor,linecolor,tolshina,linestyle,fillstyle;

void count();

public:

pointtype point[4],center;

parallelogramm();

void set_coordinates(int x1,int y1,int x2,int y2,int x3,int y3);

void draw();

int ok();

void set_fillcolor(int c){fillcolor=c;}

void set_linecolor(int c){linecolor=c;}

void set_tolshina(int t){tolshina=t;}

void set_linestyle(int ls){linestyle=ls;}

void set_fillstyle(int fs){fillstyle=fs;}

int get_fillcolor(){return fillcolor;}

int get_linecolor(){return linecolor;}

int get_tolshina(){return tolshina;}

int get_linestyle(){return linestyle;}

int get_fillstyle(){return fillstyle;}

void drawfill();

int findinside(parallelogramm *obj);

int readfromfile(char *filename);

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

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