Условие задачи:
Разработать функции, рисующие на экране следующие геометрические фигуры:
– незакрашенную фигуру,
– закрашенную фигуру,
Определить класс, реализующий понятие геометрической фигуры в графической системе.
Включить в разработанный класс функции
– устанавливающие и изменяющие геометрические и графические характеристики фигуры (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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.