Здравствуйте! Помогите пожалуйста решить задачу.
На 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;
Необходимо определить какие точки лежат внутри многоугольника. Может у кого-нибудь готовая реализация алгоритма трассировки луча или советы по решению задачи.
Заранее благодарен за ответы!