public void AffineTransformTest()
        {
            var c = new double[6];

            c[0] = -179.75; // x-coordinate of the *center* of the top-left cell
            c[1] = 0.5;     // column width
            c[2] = 0.0;     // rotation/skew term
            c[3] = 89.75;   // y-coordinate of the *center* of the top-left cell
            c[4] = 0.0;     // rotation/skew term
            c[5] = -0.5;    // negative row height
            var at = new AffineTransform(c);

            var rand = new Random();

            for (int row = 0; row < 9; row++)
            {
                for (int col = 0; col < 9; col++)
                {
                    Coordinate corner   = at.CellTopLeft_ToProj(row, col);
                    double     frac_col = rand.NextDouble();
                    double     frac_row = rand.NextDouble();
                    double     dX       = c[1] * frac_col + c[2] * frac_row;
                    double     dY       = c[4] * frac_col + c[5] * frac_row;
                    Coordinate point    = new Coordinate(corner.X + dX, corner.Y + dY);
                    Assert.AreEqual(at.ProjToCell(point), new RcIndex(row, col));
                }
            }
        }