Курсовая работа: Разработка программы рисования замкнутых многоугольников на языке С++, с использованием библиотеки VCL

pow (this->fulcrum. y-point [i]. y,2));

double beta = (ALPHA_HALF/M_PI) *acos ( (point [i]. x-

this->fulcrum. x) /R);

if (this->fulcrum. y>point [i]. y)

beta = ALPHA_FULL - beta;

double gamma = beta - this->angle;

int x = this->fulcrum. x + R*cos (gamma*M_PI/ALPHA_HALF);

int y = this->fulcrum. y + R*sin (gamma*M_PI/ALPHA_HALF);

point [i] = Point (x,y);

}

}

return point;

}

Для нахождения вершин многоугольника воспользуемся полярной системой координат с центром в центре многоугольника.

В первой строке данной функции происходит создание массива типа TPoint, размерностью, равной количества углов у многоугольника. Начиная со следующей строки, находится полярный угол и запускается цикл, в котором находятся вершины многоугольника в системе с центром в центре многоугольника, с использованием полярных координат, к этим координатам прибавляется смещение центра относительно начала координат.


Далее, если имеется угол, на который необходимо повернуть фигуру, то запускается цикл, в котором, находится длинна вектора с началом в точке центра вращения, обратным преобразованием находится полярный угол между вектором и плоскостью вращения. К найденному углу прибавляется угол, на который необходимо повернуть многоугольник, и осуществляется преобразование, из полярных координат в декартовы координаты.

Фигуры в памяти хранятся с использованием класса vector. Класс vector является очень удобным методом для хранения неизвестного числа переменных в памяти. При создании нового многоугольника объект класса Polygone добавляется в список, хранящийся в памяти.

Создание многоугольника происходит при нажатии левой кнопки мыши на холсте, в обработчике события происходит обработка следующего кода:

if (RadioButton1->Checked) {

int n = Edit1->Text. ToInt ();

int size = Edit2->Text. ToInt ();

Polygone polygon = Polygone (n,size,TPoint (X,Y));

heap. push_back (polygon);

updateImage (Image1);

}

В первых двух строках происходит считывание данных из текстовых полей, в одном из которых мы указываем количество углов, а во втором размер создаваемого многоугольника.

Следующий этап - создание многоугольника в памяти и занесение его в список. В последней строке происходит обновление холста. Функция обновления холста реализована следующим образом:

void updateImage (TImage *Image) {

К-во Просмотров: 259
Бесплатно скачать Курсовая работа: Разработка программы рисования замкнутых многоугольников на языке С++, с использованием библиотеки VCL