Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }