예제 #1
0
        private void SetCorners()
        {
            Xyf    xyf = Xyf.Create(tileX, tileY, face);
            double dc  = 0.5 / nside;
            double xc  = (xyf.ix + 0.5) / nside;
            double yc  = (xyf.iy + 0.5) / nside;

            TopLeft     = Fxyf.Create(xc + dc, yc + dc, xyf.face).toVec3();
            BottomLeft  = Fxyf.Create(xc - dc, yc + dc, xyf.face).toVec3();
            BottomRight = Fxyf.Create(xc - dc, yc - dc, xyf.face).toVec3();
            TopRight    = Fxyf.Create(xc + dc, yc - dc, xyf.face).toVec3();
        }
예제 #2
0
        private Vector3d[] Boundaries(int x, int y, int step)
        {
            int nside = step * Math.Pow(2, Level);

            Vector3d[] points = new Vector3d[4];
            Xyf        xyf    = Xyf.Create(x + faceX * step, y + faceY * step, face);
            double     dc     = 0.5 / nside;
            double     xc     = (xyf.ix + 0.5) / nside;
            double     yc     = (xyf.iy + 0.5) / nside;

            points[0] = Fxyf.Create(xc + dc, yc + dc, xyf.face).toVec3();
            points[1] = Fxyf.Create(xc - dc, yc + dc, xyf.face).toVec3();
            points[2] = Fxyf.Create(xc - dc, yc - dc, xyf.face).toVec3();
            points[3] = Fxyf.Create(xc + dc, yc - dc, xyf.face).toVec3();

            return(points);
        }