powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Задача о принадлежности точки многоугольнику
14 сообщений из 14, страница 1 из 1
Задача о принадлежности точки многоугольнику
    #39948753
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет.

очень давно я ни чего такого не делал,

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

кто знает ссылки где посмотреть как реализуются крупные математические задачи в паскале, Delphi
ручками я буду доходить долго, хочется взглянуть
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39948754
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39948755
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63, в WinAPI, для начала.
PtInRegion()
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39948789
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63
всем привет.

очень давно я ни чего такого не делал,

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

кто знает ссылки где посмотреть как реализуются крупные математические задачи в паскале, Delphi
ручками я буду доходить долго, хочется взглянуть

Да ладно. Года два назад с сынулей-студентом данную задачу разбирали. Час работы, и то лишь потому, что на богомерзких сях, не на Дельфи, и потому, что надо было в соответствии с определенными требованиями.
Вряд ли такая задача в составе библиотек есть, слишком все просто.
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39948790
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
в соответствии с определенными требованиями

Вспомнил: полигон был невыпуклым! :)
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39948800
wassail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В GLScene всё есть, PointInPolygon() or IsPointInPolygon(), смотри здесь
https://sourceforge.net/p/glscene/code/HEAD/tree/trunk/Source/Basis/GLVectorGeometry.pas
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949316
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Вспомнил: полигон был невыпуклым! :)
Принципиальной разницы нет. Сложности начинаются при самопересечениях
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949464
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

не надо там никаких явных синусов и косинусов, свойство скалярного произведения используется
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949469
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо,
супер.
почитал, получилось, и даже чудненько
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949498
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)свойство скалярного произведения используется

Ну или векторного. Или берётся знак определителя матрицы, построенной на векторах. Или
знак невязки. Что, впрочем, всё одно и то же.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949506
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Час работы, и то лишь потому, что на богомерзких сях, не на Дельфи, и потому, что надо было в соответствии с определенными требованиями.
Вряд ли такая задача в составе библиотек есть
так надо было на богоугодных плюсах

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    polygon_type poly;
    boost::geometry::read_wkt(
        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);

    point_type p(4, 1);

    std::cout << "within: " << (boost::geometry::within(p, poly) ? "yes" : "no") << std::endl;


...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949518
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для полигона без "дырок".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function CheckInside(P: TPoint; B: TPointArray): boolean; overload;
var
  i,j : Integer;
begin
  Result:=False;
  j:=High(B);
  for i:=0 to High(B) do begin
    if ((B[i].Y<=P.Y) and (P.Y<B[j].Y)) or ((B[j].Y<=P.Y) and (P.Y<B[i].Y)) then begin
      if (P.X<(B[j].X-B[i].X)*(P.Y-B[i].Y)/(B[j].Y-B[i].Y)+B[i].X) then Result:=not Result;
    end;
    j:=i;
  end;
end;
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949532
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я уже не помню. Возможно и с "дырками" в полигоне работает.
...
Рейтинг: 0 / 0
Задача о принадлежности точки многоугольнику
    #39949902
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так точно работает для любых непересеченных многоугольников (код почти такой же, но несколько действий в not xor свёрнуто):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function DotInPolygon(X, Y: integer; const Polygon: TPointFDynArray): boolean;
var
 i, j: integer;
begin
 Result := False;
 j := 0;
 i := High(Polygon);
 while i >= 0 do
 begin
  if not ((Polygon[i].X < X) xor (X <= Polygon[j].X)) then
   if Y - Polygon[i].Y < (X - Polygon[i].X) * (Polygon[j].Y - Polygon[i].Y) / (Polygon[j].X - Polygon[i].X) then
    Result := not Result;
  j := i;
  Dec(i);
 end;
end;
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Задача о принадлежности точки многоугольнику
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]