Определение класса, объектами которого являются многоугольники указанного типа., страница 4

xt[100], yt[100], //массивы координат вершин полигона

px,py, //координаты точки, вокруг которой будет вращаться полигон

xx,yy, //координаты текущей точки, указанной мышью в графическом поле

xx1,yy1; //координаты предыдущей точки, указанной мышью в графическом поле

const char* str[2]={"Точка попадает в многоугольник", "Точка не попадает в многоугольник"};

char s1[10]; //строка, в которую записываются координаты вершины полигона (отображается рядом с самой вершиной)

void strt(double a, double b); //функция, запускающаяся при выборе пользователем пункта меню

//Выполнение действия->Ручной ввод->применить

void strr(); //функция, запускающаяся если пользователь выбрал пункт меню Выполнение действия->Ввод с помощью мыши->указать

void close();//функция, запускающаяся при закрытии формы Действие

void rot(double la, double l2, double l3); //функция, реализующая поворот полигона и запускающаяся при выборе пользователем пункта меню

//Выполнение действия->Ввод с помощью мыши->Выполнить

//--------------------------------------------------------------------------void __fastcall TForm1::N3Click(TObject *Sender)   //пункт меню "помощь"

{

Form2->Show();

}

//--------------------------------------------------------------------------void __fastcall TForm1::N4Click(TObject *Sender)   //пункт меню "выход"

{

Form1->Close();

}

//--------------------------------------------------------------------------int getmaxx()    //получение максимальных координат по х

{

return Form1->Image1->Width;

}

int getmaxy()  //получение максимальных координат по у

{

return Form1->Image1->Height;

}

void line(int x0, int y0, int x1, int y1) //прорисовка линии

{

Form1->Image1->Canvas->MoveTo(x0,y0);

Form1->Image1->Canvas->LineTo(x1,y1);

}

//--------------------------------------------------------------------------void addPoint( double x, double y) //добавление точки в полигон (выполняется при любом нажатии мышью на графическое поле)

{

msx[ind]=x; msy[ind]=y; ind++;

delete dom2;

dom2 = new CPolygon(msx,msy, ind, (TColor)clr);

}

//--------------------------------------------------------------------------void ResetPoly() //удаление текущего и создание пустого полигона (выполняется при выборе пункта меню Ввод точек->Отмена)

{

delete dom2;

dom2 = new CPolygon(0,0,0,(TColor)clr);

}

//--------------------------------------------------------------------------void SPolygon::show(double xmin, double ymin, double xmax, double ymax) //отображение полигона

{

if(n<3) return;

int i;

n1=n;

TPoint *parray = new TPoint [n];

Form1->Image1->Canvas->Brush->Color=(TColor)clr;

for(i = 0; i < n; i++)

{

parray[i]=Point(p[i].x,p[i].y);

xt[i]=p[i].x; yt[i]=p[i].y;

}

DrawPoly(parray, n); //вызов дружественной функции прорисовки полигона

delete []parray;

}

//--------------------------------------------------------------------------void DrawPoly(TPoint* p, unsigned u) //прорисовка сформированного полигона

{

Form1->Image1->Canvas->Polygon(p,u-1);

}

//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

N2->Enabled=false;

dom2 = new CPolygon(0,0,0,(TColor)clr); //при создании формы создается и полигон

}

//--------------------------------------------------------------------------void __fastcall TForm1::N2Click(TObject *Sender) //пункт меню "Выполнение действия"

{

if(mode) MessageBox(NULL, "Нельзя выполнить действие до тех пор, пока не будет сформирован многоугольник", "Ошибка", MB_ICONINFORMATION);