public void NormalizeCalibGrids() { GridsNormalised = new List<RealGridData>(); for(int i = 0; i < Grids.Count; ++i) { RealGridData grid = Grids[i]; RealGridData gridNorm = new RealGridData(); gridNorm.Rows = grid.Rows; gridNorm.Columns = grid.Columns; Vector<double> corner = new DenseVector(new double[] { grid.TopLeft.X, grid.TopLeft.Y, grid.TopLeft.Z, 1.0 }); corner = NormReal * corner; corner.DivideThis(corner.At(3)); gridNorm.TopLeft = new Vector3(corner.At(0), corner.At(1), corner.At(2)); corner = new DenseVector(new double[] { grid.TopRight.X, grid.TopRight.Y, grid.TopRight.Z, 1.0 }); corner = NormReal * corner; corner.DivideThis(corner.At(3)); gridNorm.TopRight = new Vector3(corner.At(0), corner.At(1), corner.At(2)); corner = new DenseVector(new double[] { grid.BotLeft.X, grid.BotLeft.Y, grid.BotLeft.Z, 1.0 }); corner = NormReal * corner; corner.DivideThis(corner.At(3)); gridNorm.BotLeft = new Vector3(corner.At(0), corner.At(1), corner.At(2)); corner = new DenseVector(new double[] { grid.BotRight.X, grid.BotRight.Y, grid.BotRight.Z, 1.0 }); corner = NormReal * corner; corner.DivideThis(corner.At(3)); gridNorm.BotRight = new Vector3(corner.At(0), corner.At(1), corner.At(2)); gridNorm.Update(); GridsNormalised.Add(gridNorm); } }