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Задание: Определить класс, объектом которого является выпуклый многоугольник."
" Конструктор строит выпуклую оболочку методом Дейкстры. Написать тест на принадлежность точки многоугольнику "
"с помощью метода горизонтального луча. Определить операцию вывода многоугольника в окно с помощью дружественной функции. "
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.