static Vector2 A = new Vector2(2, 2);
static Vector2 B = new Vector2(2, 6);
static Vector2 C = new Vector2(14, 6);
static Vector2 D = new Vector2(14, 2);
static Vector2 upSide = new Vector2();
static Vector2 rightSide = new Vector2();
static Vector2 downSide = new Vector2();
static Vector2 leftSide = new Vector2();
static Vector2 center = new Vector2();
public static void Main()
Console.WriteLine($"Polygon: A{A}, B{B}, C{C}, D{D}");
for(float i = 0.0f; i < 20.0f; i += 0.25f)
for(float j = 0.0f; j < 20.0f; j += 0.25f)
point = new Vector2(i,j);
bool b = IsInSurface(point);
Console.WriteLine($"{point.X} {point.Y} {b}");
private static bool IsInSurface(in Vector2 point)
bool upsideDot = Vector2.Dot(Vector2.Normalize(point - upSide), Vector2.Normalize(center - upSide)) < 0;
bool rightsideDot = Vector2.Dot(Vector2.Normalize(point - rightSide), Vector2.Normalize(center - rightSide)) < 0;
bool downsideDot = Vector2.Dot(Vector2.Normalize(point - downSide), Vector2.Normalize(center - downSide)) < 0;
bool leftsideDot = Vector2.Dot(Vector2.Normalize(point - leftSide), Vector2.Normalize(center - leftSide)) < 0;
bool isPointOutsideRectangle = upsideDot || rightsideDot || downsideDot || leftsideDot;
return !isPointOutsideRectangle;