![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте! Помогите пожалуйста решить задачу.
На 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
|
||||
|
||||
![]() Код:
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 ); Пишу программы за еду. __________________ |