Расположение многоугольника относительно прямой
Дан многоугольник и прямая.
Необходимо определить с какой стороны расположен многоугольник от прямой.
Подставляем вершины многоугольника в уравнение прямой и в зависимости от полученных знаков выдаём ответ.
Листинг C++
// расположение многоугольника отосительно прямой
// 1 - находится с положительной стороны
// - 1 - находится с отрицательной стороны
// 0 - прямая пересекает одну из сторон многоугольника (сторону а не вершину)
int polygon_for_line (vector < point > p, line l)
{
int i, j;
int s = - 2; // знак
for (i = 0; i < p.size(); ++ i)
{
int t = point_in_line (l, p[i]); // положение вершины относительно прямой
if (t != 0) // если точка не принадлежить прямой
if (s != - 2) // если s мы вычислили
if (t != s) // если знаки различны, то прямая пересекает сторону многоугольника
return 0;
else
{}
else
s = t; // если s мы ещё не вычислили, присваиваем ему вычисленное значение
}
if (s == - 2) return 0;
return s;
}
14:15
22.07.2009
По всем вопросам обращаться: rumterg@gmail.com