Помощь - Поиск - Пользователи - Календарь
Полная версия: Многоугольник и точка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость_Ivan
Пожалуйста помогите решить задачьку:

Даны координаты вершин многоугольника (X1Y1,X2Y2,..,XnYn) и точки (XY), лежащая на периметре. Определить, на какой стороне лежит точка.
volvo
Вот эта функция проверяет принадлежит ли точка (x, y) отрезку (x_st, y_st) - (x_fn, y_fn). Дальше - перебор всех возможных отрезков...

Код
Function PointInLine(x, y, st_x, st_y, fn_x, fn_y: Integer): Boolean;
 Const dV = 0.001;
 Var p: Extended;
 Begin
   If (st_x <> fn_x) Then
     Begin
       p := ((x - st_x) / (fn_x - st_x));
       PointInLine := (Abs(st_y + p*(fn_y - st_y) - y) < dV);
     End
   Else
     If (st_y <> fn_y) Then
       Begin
         p := ((y - st_y) / (fn_y - st_y));
         PointInLine := (Abs(st_x + p*(fn_x - st_x) - x) < dV);
       End
     Else
       PointInLine := ((x = st_x) and (y = st_y));
 End;
Гость_Ivan
Спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.