Пример #1
0
        private void solveDegenerateCase(Vector2 point)
        {
            var      newL = new Parabola(point);
            Parabola newP = root;
            var      npl  = root.GetLeftNode();

            while (npl != null)
            {
                newP = npl;
                npl  = newP.GetLeftNode();
            }
            //newP is a root right now.
            var rr = newP;

            newP = new Parabola(newP.Site);

            var p = new Vector2(newL.Site.X +
                                JryMath.Abs(newL.Site.X - newP.Site.X) / 2, _maxSize);
            var seg = new Segment(p, newP.Site, newL.Site);

            segs.Add(seg);

            rr.SetRightParabola(newP, seg);
            rr.SetLeftParabola(newL);
        }
Пример #2
0
        private float getClipped(Layer2DObject layer, int xph, int v)
        {
            int x = xph;
            int y = v;

            if (xph < layer.Resolution.X)
            {
                x = JryMath.Abs(xph);
            }
            if (v < layer.Resolution.Y)
            {
                y = JryMath.Abs(v);
            }

            if (xph >= layer.Resolution.X)
            {
                x = 2 * layer.Resolution.X - xph - 2;
            }
            if (v >= layer.Resolution.Y)
            {
                y = 2 * layer.Resolution.Y - v - 2;
            }



            return(layer[x, y].Value);
        }
Пример #3
0
        public float NextD(int seedX, int seedY, int seedZ)
        {
            seedX += _seed;
            seedY += 5 * _seed;
            seedZ += 13 * _seed;
            var n = seedX + seedY * 57 + seedZ * 271;

            n = (n << 13) ^ n;
            var ra    = (float)JryMath.Abs((1.0 - ((n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0));
            var intra = (long)ra;

            return(ra - intra);
        }
Пример #4
0
        public virtual float NextD(int seedX, int seedY)
        {
            seedX += 3 * _seed;
            seedY += 5 * _seed;
            var n = seedX + seedY * 57;

            n = (n << 13) ^ n;
            // it must fit into 0-1
            var ra = (float)JryMath.Abs((1.0 - ((n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0));

            var intra = (long)ra;

            return(ra - intra);
        }