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)); }
/// <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(); }