Exemplo n.º 1
0
 /// <summary>
 /// 定義したグリッドマークの値をすべて削除します.
 /// </summary>
 public void CleaerGridMark()
 {
     for (int i = 0; i < gridMarks.Length; ++i)
     {
         gridMarks[i] = new GridMark();
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// これまで設定したグリッドマークの座標を初期化(消去)します.
 /// </summary>
 public void InitializeGridMarks()
 {
     gridMarks = new GridMark[AllGridMarksNum];
     for (int i = 0; i < gridMarks.Length; ++i)
     {
         gridMarks[i] = new GridMark();
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// 指定座標をグリッドマークとして設定します.
        /// <para>座標値は必ずエマルションでの座標を指定してください。</para>
        /// <para>ただし,50倍向けに補正された座標が設定されます.</para>
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="gridMarkPoint">設定するグリッドマーク</param>
        /// <param name="exsited">グリッドマークを発見したと設定するかどうか</param>
        public void SetGridMark(double x, double y, GridMarkPoint gridMarkPoint, Boolean exsited = true)
        {
            Vector2 correctedPoint = getCorrectedGapCoordinate(new Vector2(x, y));

            gridMarks[(int)gridMarkPoint]         = new GridMark();
            gridMarks[(int)gridMarkPoint].x       = correctedPoint.X;
            gridMarks[(int)gridMarkPoint].y       = correctedPoint.Y;
            gridMarks[(int)gridMarkPoint].Existed = exsited;
        }
Exemplo n.º 4
0
        /// <summary>
        /// 与えられたエンコーダ座標系の地点から最も近いグリッドマーク情報を取得します。
        /// </summary>
        /// <param name="point">エンコーダ座標系の座標</param>
        /// <returns>最も近いグッドマークをエンコーダ座標系で</returns>
        public GridMark GetTheNearestGridMark(Vector3 encoderPoint)
        {
            GridParameter gridParam = parameterManager.GridParameter;

            if (gridParam.LoadedGridOriginalFine == false)
            {
                throw new Exception("null");
            }
            GridMark retval = new GridMark();
            Vector2  pmover = new Vector2();
            //Vector2 gmover = new Vector2();
            Vector2 gstage = new Vector2();

            try {
                double[,] gridOriginalFineX = gridParam.GridOriginalFineX;
                double[,] gridOriginalFineY = gridParam.GridOriginalFineY;

                double minDistance = 99999999.9;

                for (int ix = 0; ix < gridOriginalFineX.GetLength(0); ++ix)
                {
                    for (int iy = 0; iy < gridOriginalFineX.GetLength(1); ++iy)
                    {
                        double distanceX = gridOriginalFineX[ix, iy] - encoderPoint.X;
                        double distanceY = gridOriginalFineY[ix, iy] - encoderPoint.Y;
                        double distance  = Math.Sqrt(distanceX * distanceX + distanceY * distanceY);
                        if (distance < minDistance)
                        {
                            minDistance = distance;
                            retval.x    = gridOriginalFineX[ix, iy];
                            retval.y    = gridOriginalFineY[ix, iy];
                        }
                    }
                }
            } catch {
                throw new Exception("null");
            }
            //Ipt.MtoG(0, gmover.X, gmover.Y, ref gstage.X, ref gstage.Y);
            Ipt.GToM("p", retval.x, retval.y, ref gstage.X, ref gstage.Y);
            retval.x = gstage.X;
            retval.y = gstage.Y;
            return(retval);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 引数で与えられたグリッドマークの座標を取得します.
        /// <para>未定義のグリッドマークは予測値を取得します.</para>
        /// </summary>
        /// <param name="gridMark">座標を取得したいグリッドマーク</param>
        /// <returns>グリッドマークの座標</returns>
        public Vector2 GetGridMarkCoord(GridMarkPoint gridMark)
        {
            Vector2 coord = new Vector2();

            if (coordManager.GetGridMark(gridMark).Existed)
            {
                coord = new Vector2(
                    coordManager.GetGridMark(gridMark).x,
                    coordManager.GetGridMark(gridMark).y);
            }
            else
            {
                GridMark central = coordManager.GetGridMark(GridMarkPoint.CenterMiddle);
                coord = new Vector2(
                    innerCoord.GetGridMark(gridMark).x + OffsetX + central.x,
                    innerCoord.GetGridMark(gridMark).y + OffsetY + central.y
                    );
            }

            return(coord);
        }