Находится ли точка внутри прямоугольника? - C#
Формулировка задачи:
Помогите пожалуйста решить задачу. Необходимо проверить находится ли точка А(х, у) внутри прямоугольника заданного четырьмя координатами, при этом промоугольник не обязательно параллелен осям координат. Огромное спасибо.
Решение задачи: «Находится ли точка внутри прямоугольника?»
textual
Листинг программы
public class Point
{
public int X, Y;
public Point()
{
X = Y = 0;
}
public Point(int x, int y)
{
X = x;
Y = y;
}
}
public static class Polygon
{
public static bool Contains(Point[] poly, Point a)
{
Point middle = a;
int result = 0;
for (int i = 1; i < poly.Length; i++)
{
result += intersect(poly[i - 1], poly[i], middle);
}
return result < 3;
}
private static int intersect(Point a, Point b, Point c)
{
int ax = a.X - c.X;
int ay = a.Y - c.Y;
int bx = b.X - c.X;
int by = b.Y - c.Y;
int s = Math.Sign(ax * by - ay * bx);
if (ay < 0 ^ by < 0)
{
if (by < 0)
return s;
return -s;
}
if (s == 0 && (ay == 0 || by == 0) && ax * bx <= 0)
return 0;
return 1;
}
}