Example #1
0
        public void readMagTheta()
        {
            string datarootdirpath = string.Format(@"C:\test");
            string line;

            System.IO.StreamReader file = new System.IO.StreamReader(datarootdirpath + @"\mag_theta.txt");
            line = file.ReadLine();
            string[] data = line.Split(' ');
            magnitOfGrid = double.Parse(data[0]);
            angleOfGrid  = double.Parse(data[1]);
            file.Close();

            Ipt.SetGridLocal(
                (short)parameterManager.PlateNo,
                magnitOfGrid,
                angleOfGrid,
                parameterManager.EmulsionIndexUp,
                parameterManager.EmulsionIndexDown);
            System.Diagnostics.Debug.WriteLine(String.Format("mag: {0}, theta: {1}", magnitOfGrid, angleOfGrid));
        }
Example #2
0
        /// <summary>
        /// グリッドの大きさと角度を定義されたグリッドマークから算出します.
        /// </summary>
        /// <exception cref="System.Exception">定義されたグリッドマーク数が少ない場合</exception>
        private void setAngleAndMagnitOfGrid()
        {
            double     distOrigin = 0, distNow = 0;
            double     thetaOrigin = 0, thetaNow = 0, theta = 0;
            double     dx, dy;
            Vector2Int iId, jId;
            int        combinationNum = 0;

            // 定義されたグリッドマーク数が少ない場合は例外を返す
            int num = DefinedGridMarkNum;

            if (num < 2)
            {
                throw new Exception("Grid mark data is few(" + num.ToString() + ").");
            }

            for (int i = 0; i < AllGridMarksNum; ++i)
            {
                for (int j = i + 1; j < AllGridMarksNum; ++j)
                {
                    if (gridMarks[i].Existed)
                    {
                        dx          = gridMarks[i].x - gridMarks[j].x;
                        dy          = gridMarks[i].y - gridMarks[j].y;
                        distNow    += Math.Sqrt(dx * dx + dy * dy);
                        thetaNow    = (Math.Abs(dx) > 5 ? Math.Atan(dy / dx) : -Math.Atan(dx / dy));
                        iId         = getXYGridId(i);
                        jId         = getXYGridId(j);
                        dx          = gridOrgX[iId.X, iId.Y] - gridOrgX[jId.X, jId.Y];
                        dy          = gridOrgY[iId.X, iId.Y] - gridOrgY[jId.X, jId.Y];
                        distOrigin += Math.Sqrt(dx * dx + dy * dy);
                        thetaOrigin = (Math.Abs(dx) > 5 ? Math.Atan(dy / dx) : -Math.Atan(dx / dy));
                        theta      += (thetaNow - thetaOrigin);
                        ++combinationNum;
                    } // if END
                }     // for j END
            }         // for i END

            magnitOfGrid = distNow / distOrigin;
            angleOfGrid  = theta / combinationNum;
            Ipt.SetGridLocal(
                (short)parameterManager.PlateNo,
                magnitOfGrid,
                angleOfGrid,
                parameterManager.EmulsionIndexUp,
                parameterManager.EmulsionIndexDown);
            System.Diagnostics.Debug.WriteLine(String.Format("mag: {0}, theta: {1}", magnitOfGrid, angleOfGrid));



            string datarootdirpath = string.Format(@"C:\test");

            System.IO.DirectoryInfo mydir = System.IO.Directory.CreateDirectory(datarootdirpath);

            string       txtfileName_grid = datarootdirpath + string.Format(@"\mag_theta.txt");
            StreamWriter twriter_grid     = File.CreateText(txtfileName_grid);

            twriter_grid.WriteLine("{0} {1}", magnitOfGrid, angleOfGrid);
            twriter_grid.Close();


            string       txtfileName_grid3x3 = datarootdirpath + string.Format(@"\stagecoord_grid3x3.txt");
            StreamWriter twriter_grid3x3     = File.CreateText(txtfileName_grid3x3);

            for (int i = 0; i < AllGridMarksNum; i++)
            {
                twriter_grid3x3.WriteLine("{0} {1}", gridMarks[i].x, gridMarks[i].y);
            }
            twriter_grid3x3.Close();
        }