Exemplo n.º 1
0
        public static bool segment_rect_intersection(Rect bounds, point_class p)
        {
            float      num = p.p2.x - p.p1.x;
            float      num2;
            clip_class clip_class = new clip_class(0, 1f);
            int        arg_173_0;

            if (clip_test(-num, p.p1.x - bounds.xMin, clip_class) && clip_test(num, bounds.xMax - p.p1.x, clip_class))
            {
                num2 = p.p2.y - p.p1.y;
                if (clip_test(-num2, p.p1.y - bounds.yMin, clip_class) && clip_test(num2, bounds.yMax - p.p1.y, clip_class))
                {
                    if (clip_class.u2 < 1f)
                    {
                        p.p2.x = p.p1.x + clip_class.u2 * num;
                        p.p2.y = p.p1.y + clip_class.u2 * num2;
                    }
                    if (clip_class.u1 > 0)
                    {
                        p.p1.x = p.p1.x + clip_class.u1 * num;
                        p.p1.y = p.p1.y + clip_class.u1 * num2;
                    }
                    arg_173_0 = 1;
                    return(arg_173_0 != 0);
                }
            }
            arg_173_0 = 0;
            return(arg_173_0 != 0);
        }
Exemplo n.º 2
0
        public static bool clip_test(float p, float q, clip_class u)
        {
            float num;
            bool  result = true;

            if (p < 0)
            {
                num = q / p;
                if (num > u.u2)
                {
                    result = false;
                }
                else if (num > u.u1)
                {
                    u.u1 = num;
                }
            }
            else if (p > 0)
            {
                num = q / p;
                if (num < u.u1)
                {
                    result = false;
                }
                else if (num < u.u2)
                {
                    u.u2 = num;
                }
            }
            else if (q < 0)
            {
                result = false;
            }
            return(result);
        }