Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить включает ли один регион другой


Frozzen ©   (2004-11-22 15:30:00) 

Здравствуйте
Встала новая задача:
Есть положим 2 масива точек, описывающих границы регионов, как определить включает ли один региоy другой. Регион,если лежит в другом, то полностью, без пересечений границ?


Frozzen   (2004-11-23 08:18:00) [1]

Спасибо все сделал


MBo   (2004-11-23 07:37:00) [2]

P.S. И третье: регион-приемник для CombineRgn должен уже быть создан


MBo   (2004-11-23 07:22:00) [3]

А с чего ты решил, что CreatePolygonRgn будет работать с определенным тобой нестандартным типом?
Да и с указателями ты заморочился.


Frozzen   (2004-11-22 18:22:00) [4]

Ничего не выходит, я пишу

POINT = record
x : Word;
y : Word;
end;

arp = array of POINT;
type parp = ^arp;

var
pol1p, pol2p : arp;
p1, p2 : pArp;

SetLength(pol1p, 10);
SetLength(pol2p, 20);
p1 := @pol1p;
p2 := @pol2p;

Заполняю массивы

hrg1 := CreatePolygonRgn(p1, 10, WINDING);
if hrg1 = 0 then ShowMessage('2');

hrg2 := CreatePolygonRgn(p2, 20, WINDING);

if (CombineRgn(hrgD, hrg1, hrg2, RGN_DIFF) = NULLREGION ) then
ShowMessage('1');
Дак CreatePolygonRgn возвращает 0


Frozzen   (2004-11-22 17:03:00) [5]

if ( CombineRgn(hrgnDest, hrgnSrc1, hrgnSrc2, RGN_DIFF) = NULLREGION )

Как я понимаю нужно создать регионы,

HRGN CreatePolygonRgn(

CONST POINT *lppt, // pointer to array of points
int cPoints, // number of points in array
int f

у меня массив точек типа

TCoordPoint = class(TObject)
lat, long :real;
x, y :integer;
r :real;
можно его пользовать, или нужно к Point переходить


MBo   (2004-11-22 16:22:00) [6]

>TUser ©   (22.11.04 16:13) [5]
Если есть вершины - можно построить регионы.

Иначе придется с нетривиальной вычислительной геометрией работать.


TUser   (2004-11-22 16:13:00) [7]


> MBo ©   (22.11.04 16:11) [4]

Не уверен, что 'регионы' есть регионы в понимании АПИ


MBo   (2004-11-22 16:11:00) [8]

region functions в хелпе WinSDK


Frozzen   (2004-11-22 15:57:00) [9]

Поискал по слову регион ничего не нашел


TUser   (2004-11-22 15:35:00) [10]

регион А принадлежит региону Б := любая точка внутри региона А принадлежит региону Б

любая, т.е. в т.ч. и граничная.

Как проверить точку на принадлежность к региону - недавно тут обсуждалось. Проведи горизонтальную линию и посчитай ее пересечение с границей региона Б

Другой вариант решения, для выпуклых регионов - найти крайние верхнюю, нижнюю, правую и лувую точки региона А и Б. Еслит проекции А лежат внутри проекция Б, то из того, что границы не пересекаются бедет следовать, что А прин. Б.


MBo   (2004-11-22 15:32:00) [11]

посмотреть на их пересечение и разность


Наверх

Титульная страница Поиск, карта сайта Написать письмо