Hisoblash geometriyasining asosiy tarmoqlari


Download 0.57 Mb.
bet3/7
Sana16.01.2023
Hajmi0.57 Mb.
#1095275
1   2   3   4   5   6   7
Bog'liq
Algoritms

A nuqtalar to'plamli minimal qavariq qobiqning asosiy xususiyati shundaki, bu tanasi qavariq ko'pburchak bo'lib, uning uchlari A dagi bir nechta nuqtadir, shuning uchun minimal qavariq qobiqni topish muammosi oxir-oqibat A dan kerakli nuqtalarni tanlash va tartiblashgacha kamayadi. Algoritm chiqishi ko'pburchak bo'lishi kerakligi sababli tartiblash ya’ni saralash zarur, ya'ni uchlar ketma-ketligi bo’yicha. Uchlar tartibiga qo'shimcha ravishda shart qo'yamiz - ko'pburchakning o'tish yo'nalishi musbat bo'lishi kerak (soat strelkasi bo’yicha).

Minimal qavariq qobiqni qurish masalasi hisoblash geometriyasidagi eng oddiy muammolardan biri hisoblanadi; buning uchun juda ko'p turli algoritmlar mavjud. Quyida biz ikkita algoritmni ko'rib chiqamiz – Grexem (Graham scan) va Jarvis (Jarvis march).

Grexem algoritmi quyidagi ketma-ket keltirilgan.

Grexem algoritmi quyidagi ketma-ket keltirilgan.

Grexem algoritmining bajarilish ketma-ketligi

#include

#include

#include

#include

using namespace std;

struct point { //define points for 2d plane

int x, y;

};

point p0; //used to another two points

point secondTop(stack
&stk) {

point tempPoint = stk.top();

stk.pop();

point res = stk.top(); //get the second top element

stk.push(tempPoint); //push previous top again

return res;

}

int squaredDist(point p1, point p2) {

return ((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));

}

int direction(point a, point b, point c) {

int val = (b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y);

if (val == 0)

return 0; //colinear

else if(val < 0)

return 2; //anti-clockwise direction


Download 0.57 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling