Exemple #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
                        }
                    };
                }
            }
        }
Exemple #2
0
        protected Healpix.HealpixIndex GetNearestPiece(Vector3D vec, int begin_i, int end_i)
        {
            int    begin_n = GetIndexAt(begin_i, 1);
            int    end_n   = GetIndexAt(end_i, GetMaxIntraRingIndexAt(end_i));
            double max_val = 0.0;

            Healpix.HealpixIndex?best_idx = null;
            for (int i = begin_n; i <= end_n; i++)
            {
                PiecePositionsType element = PiecePositions[i];
                double             val     = Vector3D.DotProduct(vec, element.position_cart);
                if (val > max_val)
                {
                    max_val  = val;
                    best_idx = element.index;
                }
            }
            if (best_idx == null)
            {
                return(new Healpix.HealpixIndex()
                {
                    i = 1, j = 1
                });
            }
            else
            {
                return((Healpix.HealpixIndex)best_idx);
            }
        }
Exemple #3
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
                        }
                    };
                }
            }
        }