Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2014, 20:11
bloodmaster89 bloodmaster89 вне форума
Прохожий
 
Регистрация: 29.09.2013
Сообщения: 16
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Принадлежность точки многоугольнику

Здравствуйте! Помогите пожалуйста решить задачу.
На Canvas Image задается правильный n многоугольник, радиус описанной окружности вокруг многоугольника задаю сам.

Код:
procedure first_build (l,r,Ras,n: integer); (*Выполнение команды построить*)
var i,j:integer;
    p:array of Tpoint;  //Массив точек
    a,da:real;
begin
x0:=l*mash;
y0:=Form1.Image1.Height-l*mash;
da:=360/n; // величина центрального угла = шаг поворота
Setlength(p,n+1);
a:=0; //начальный угол от горизонтальной оси против часовой стрелки
for i:=0 to n-1 do //создаем массив координат вершин
  begin
    p[i].x:=round(x0+Ras*cos(fi_const*pi/180)*mash+r*cos(a*pi/180)*mash);
    p[i].y:=round(y0-Ras*sin(fi_const*pi/180)*mash-r*sin(a*pi/180)*mash);
    a:=a+da;
  end;
p[n].x:=p[0].x;
p[n].y:=p[0].y;

(*Запись координат вершин*)
AssignFile(cord_pol, 'cord_pol.txt');
ReWrite(cord_pol);
for i:=0 to n do begin
Append(cord_pol);
writeln(cord_pol, p[i].x,' ',p[i].y);
CloseFile(cord_pol);
end;


Form1.Image1.Canvas.MoveTo(p[0].x,p[0].y);
for i:=0 to n do begin
Form1.Image1.Canvas.LineTo(p[i].x,p[i].y);
Form1.Image1.Canvas.Pen.Width:=2;
Form1.Image1.Canvas.Pen.Color:=clGreen;
end;
end;

Необходимо определить какие точки лежат внутри многоугольника. Может у кого-нибудь готовая реализация алгоритма трассировки луча или советы по решению задачи.
Заранее благодарен за ответы!
Ответить с цитированием
  #2  
Старый 31.03.2014, 20:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

Код:
HRGN CreatePolygonRgn(
    CONST POINT *lppt,	// pointer to array of points 
    int cPoints,	// number of points in array 
    int fnPolyFillMode 	// polygon-filling mode 
   );
Код:
BOOL PtInRegion(
    HRGN hrgn,	// handle of region 
    int X,	// x-coordinate of point  
    int Y 	// y-coordinate of point  
   );
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025