public SkewedGridRecognizer(Vector2Int gridNumber, Dictionary <Color, string> colorBlockNames, Vector2[] corners) : base(gridNumber, colorBlockNames)
 {
     intersectionPoints = new Vector2[GridNumber.x, GridNumber.y];
     Corners            = corners;
     for (int i = 0; i < GridNumber.x; i++)  //generates polygons according to the given corner positions
     {
         for (int j = 0; j < GridNumber.y; j++)
         {
             var  A1     = (Corners[1] - Corners[0]) / GridNumber.x * i + Corners[0];
             var  A2     = (Corners[2] - Corners[3]) / GridNumber.x * i + Corners[3];
             var  B1     = (Corners[0] - Corners[3]) / GridNumber.y * j + Corners[3];
             var  B2     = (Corners[1] - Corners[2]) / GridNumber.y * j + Corners[2];
             bool exists = false;
             Debug.Log(i.ToString() + " " + j.ToString());
             intersectionPoints[i, j] = Geometry2D.GetIntersectionPointCoordinates(A1, A2, B1, B2, out exists);
         }
     }
 }