コード例 #1
0
        protected override void CreatePiecePositionTable()
        {
            PiecePositions = new PiecePositionsType[GetMaxIndex()];
            int max_ring = GetMaxRingIndex();

            for (int i = 1, m = 0; i <= max_ring; i++)
            {
                int max_intra_ring = GetMaxIntraRingIndexAt(i);
                for (int j = 1; j <= max_intra_ring; j++, m++)
                {
                    Healpix.HealpixIndex idx = new Healpix.HealpixIndex()
                    {
                        i = i, j = j
                    };
                    Healpix.HealpixPolarCoord polar = pixelization.GetSphCoord(idx);
                    Point3D point = pixelization.GetCartesianCoord(polar);
                    PiecePositions[m] = new PiecePositionsType()
                    {
                        index          = idx,
                        position_polar = polar,
                        position_cart  = new Vector3D()
                        {
                            X = point.X, Y = point.Y, Z = point.Z
                        }
                    };
                }
            }
        }
コード例 #2
0
        protected override void CreatePiecePositionTable()
        {
            PiecePositions = new PiecePositionsType[GetMaxIndex()];
            int max_ring = GetMaxRingIndex();

            for (int i = 1, m = 0; i <= max_ring; i++)
            {
                int max_intra_ring = GetMaxIntraRingIndexAt(i);
                if (max_intra_ring == 1)
                {
                    PiecePositions[m++] = new PiecePositionsType()
                    {
                        index = new Healpix.HealpixIndex()
                        {
                            i = i, j = 1
                        },
                        position_polar = new Healpix.HealpixPolarCoord()
                        {
                            phi = 0, theta = (i == 1) ? 0 : Math.PI
                        },
                        position_cart = new Vector3D()
                        {
                            X = 0, Y = 0, Z = (i == 1) ? 1 : -1
                        }
                    };
                    continue;
                }
                for (int j = 1; j <= max_intra_ring; j++, m++)
                {
                    Healpix.HealpixIndex idx = new Healpix.HealpixIndex()
                    {
                        i = i, j = j
                    };
                    Healpix.HealpixIndex idx_act = new Healpix.HealpixIndex()
                    {
                        i = i - 1, j = j - 0.5
                    };
                    Healpix.HealpixPolarCoord polar = pixelization.GetSphCoord(idx_act);
                    Point3D point = pixelization.GetCartesianCoord(polar);
                    PiecePositions[m] = new PiecePositionsType()
                    {
                        index          = idx,
                        position_polar = polar,
                        position_cart  = new Vector3D()
                        {
                            X = point.X, Y = point.Y, Z = point.Z
                        }
                    };
                }
            }
        }
コード例 #3
0
        public override void SetCursorCoordinates(double theta, double phi)
        {
            Healpix.HealpixPolarCoord polar = new Healpix.HealpixPolarCoord()
            {
                theta = theta,
                phi   = phi
            };
            Healpix.HealpixIndex index = pixelization.GetHealpixIndex(polar);
            int     base_idx_i         = (int)(index.i + 1 + 0.5);
            int     begin_idx_i        = (base_idx_i <= 1) ? 1 : base_idx_i - 1;
            int     end_idx_i          = (base_idx_i >= GetMaxRingIndex()) ? GetMaxRingIndex() : base_idx_i + 1;
            Point3D point = pixelization.GetCartesianCoord(polar);

            Healpix.HealpixIndex idx = GetNearestPiece(new Vector3D()
            {
                X = point.X, Y = point.Y, Z = point.Z
            }, begin_idx_i, end_idx_i);
            cursor_idx_i = (int)idx.i;
            cursor_idx_j = (int)idx.j;
        }