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

dom2->show(0, 0, Image1->Width, Image1->Height);

Form1->Image1->Canvas->Brush->Color=clWhite;

DrawPoly(); //рисуется уже сам полигон

if(set) //если пользователь задал точку вращения с помощью ввода ее

//координат, то ее нужно прорисовать

{

Form1->Image1->Canvas->Brush->Color=clBlue;

Form1->Image1->Canvas->Ellipse(px-4,py-4,px+4,py+4);

Form1->Image1->Canvas->Brush->Color=clWhite;

}

}

}

if(mode==false&&ind!=0) //если полигон сформирован

{

TPoint f;

f=Form1->CalcCursorPos();

Pnt r;

r.x=f.x;

r.y=f.y;

Form1->Image1->Canvas->Brush->Color=clWhite;

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

dom2->show(0, 0, Image1->Width, Image1->Height);

Form1->Image1->Canvas->Brush->Color=clWhite;

DrawPoly(); //прорисовываем полигон

Form1->Image1->Canvas->Brush->Color=clGreen;

Image1->Canvas->Ellipse(r.x-2,r.y-2,r.x+2,r.y+2); //прорисовываем точку,

//которую пользователь проверяет на принадлежность выпуклой оболочке

Form1->Image1->Canvas->Brush->Color=clWhite;

if(hit(r,*dom2)) //проверяем принадлежит ли точка полигону или нет

{

Image1->Canvas->TextOutA(4,590,str[0]); //выводим сообщение если принадлежит

}

else Image1->Canvas->TextOutA(4,590,str[1]); //выводим сообщение если не

//принадлежит

}

if(mode==false && ss==true) //если полигон сформирован и пользователь задал точку с

//помощью ввода мышью

{

TPoint f;

f=Form1->CalcCursorPos();

Form1->Image1->Canvas->Brush->Color=clWhite;

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

dom2->show(0, 0, Form1->Image1->Width, Form1->Image1->Height);

Form1->Image1->Canvas->Brush->Color=clWhite;

DrawPoly(); //прорисовываем полигон

Form1->Image1->Canvas->Brush->Color=clBlue;

Form1->Image1->Canvas->Ellipse(f.x-4,f.y-4,f.x+4,f.y+4); //прорисовываем

//точку

Form1->Image1->Canvas->Brush->Color=clWhite;

px=f.x;py=f.y;

}

}

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

{

ss=false; set=false;

}

//--------------------------------------------------------------------------void __fastcall TForm1::N5Click(TObject *Sender) //пункт меню "Ввод точек->Начать ввод"

{

mode=true;

}

//--------------------------------------------------------------------------void __fastcall TForm1::N6Click(TObject *Sender) //пункт меню "Ввод точек->Закончить ввод"

{

mode=false;

}

//--------------------------------------------------------------------------Текст файла Unit2.cpp

//--------------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

//--------------------------------------------------------------------------#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

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

: TForm(Owner)

{

Memo1->Text="\t\t\t.:: ПОМОЩЬ ::.\r\n\r\n"

"\t\t\tВариант 21.\r\n\r\nЗадание: Определить класс, объектом которого является выпуклый многоугольник."

" Конструктор строит выпуклую оболочку методом Дейкстры. Написать тест на принадлежность точки многоугольнику "

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