public void LoadFromFile(Stream file, string path) { XmlDocument dataDoc = new XmlDocument(); dataDoc.Load(file); _gridsList.Clear(); XmlNodeList grids = dataDoc.GetElementsByTagName("Grid"); foreach (XmlNode gridNode in grids) { RealGridData grid = new RealGridData(); var gridNum = gridNode.Attributes["num"]; if (gridNum != null) grid.Num = int.Parse(gridNum.Value); var gridLabel = gridNode.Attributes["label"]; if (gridLabel != null) grid.Label = gridLabel.Value; XmlNode topleftNode = gridNode.SelectSingleNode("child::TopLeft"); grid.TopLeft = Vector3.CreateFromXmlNode(topleftNode); XmlNode toprightNode = gridNode.SelectSingleNode("child::TopRight"); grid.TopRight = Vector3.CreateFromXmlNode(toprightNode); XmlNode botleftNode = gridNode.SelectSingleNode("child::BotLeft"); grid.BotLeft = Vector3.CreateFromXmlNode(botleftNode); XmlNode botrightNode = gridNode.SelectSingleNode("child::BotRight"); grid.BotRight = Vector3.CreateFromXmlNode(botrightNode); var rowsNode = gridNode.SelectSingleNode("child::Rows"); if(rowsNode != null) grid.Rows = int.Parse(rowsNode.Attributes["count"].Value); var colsNode = gridNode.SelectSingleNode("child::Columns"); if(colsNode != null) grid.Columns = int.Parse(colsNode.Attributes["count"].Value); grid.Update(); _gridsList.Add(grid); } }
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); } }