Принадлежность точки лучу
Дан луч и точка
Необходимо выяснить, принадлежит ли точка лучу
Очевидно, что точка должна лежать на прямой луча. Если прямая вертикальная, то проверяем, чтобы точка лежала по оси OY с той же стороны, куда направлен луч. Если прямая не вертикальна, то проверяем аналогично относительны оси OX.
Листинг C++
bool point_in_ray (point p, point p1, point p2)
{
// принадлежит ли точка прямой луча
line l = toline (p1, p2);
if (point_in_line (l, p) != 0) return false;
// если прямая вертикальная, то проверяем на y
if (abs (l.b) <= eps)
if (p2.y >= p1.y)
return p.y >= p1.y;
else
return p.y <= p1.y;
// иначе проверяем на x
if (p2.x >= p1.x)
return p.x >= p1.x;
else
return p.x <= p1.x;
}
13:06
20.07.2009
По всем вопросам обращаться: rumterg@gmail.com