Здравствуйте! Помогите пожалуйста решить задачу.
На Canvas Image задается правильный n многоугольник, радиус описанной окружности вокруг многоугольника задаю сам.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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 ;
|
Необходимо определить какие точки лежат внутри многоугольника. Может у кого-нибудь готовая реализация алгоритма трассировки луча или советы по решению задачи.
Заранее благодарен за ответы!