Beispiel #1
0
        public override bool Init()
        {
            if (base.Init())
            {
                //      // seed
                //      srand(0);

                CCPoint A, B, C, D, p1, p2, p3, p4;
                float   s, t;

                int err = 0;
                int ok  = 0;

                //
                // Test 1.
                //
                CCLog.Log("Test1 - Start");
                for (int i = 0; i < 10000; i++)
                {
                    // A | b
                    // -----
                    // c | d
                    float ax = Random.Next() * -5000;
                    float ay = Random.Next() * 5000;

                    // a | b
                    // -----
                    // c | D
                    float dx = Random.Next() * 5000;
                    float dy = Random.Next() * -5000;

                    // a | B
                    // -----
                    // c | d
                    float bx = Random.Next() * 5000;
                    float by = Random.Next() * 5000;

                    // a | b
                    // -----
                    // C | d
                    float cx = Random.Next() * -5000;
                    float cy = Random.Next() * -5000;

                    A = new CCPoint(ax, ay);
                    B = new CCPoint(bx, by);
                    C = new CCPoint(cx, cy);
                    D = new CCPoint(dx, dy);
                    //if (CCPoint.ccpLineIntersect(A, D, B, C, ref s, ref t))
                    //{
                    //    if (check_for_error(A, D, B, C, s, t) != 0)
                    //        err++;
                    //    else
                    //        ok++;
                    //}
                }
                CCLog.Log("Test1 - End. OK=%i, Err=%i", ok, err);

                //
                // Test 2.
                //
                CCLog.Log("Test2 - Start");

                p1 = new CCPoint(220, 480);
                p2 = new CCPoint(304, 325);
                p3 = new CCPoint(264, 416);
                p4 = new CCPoint(186, 416);
                s  = 0.0f;
                t  = 0.0f;
                if (CCPoint.LineIntersect(p1, p2, p3, p4, ref s, ref t))
                {
                    check_for_error(p1, p2, p3, p4, s, t);
                }

                CCLog.Log("Test2 - End");


                //
                // Test 3
                //
                CCLog.Log("Test3 - Start");

                ok  = 0;
                err = 0;
                for (int i = 0; i < 10000; i++)
                {
                    // A | b
                    // -----
                    // c | d
                    float ax = Random.Next() * -500;
                    float ay = Random.Next() * 500;
                    p1 = new CCPoint(ax, ay);

                    // a | b
                    // -----
                    // c | D
                    float dx = Random.Next() * 500;
                    float dy = Random.Next() * -500;
                    p2 = new CCPoint(dx, dy);


                    //////

                    float y = ay - ((ay - dy) / 2.0f);

                    // a | b
                    // -----
                    // C | d
                    float cx = Random.Next() * -500;
                    p3 = new CCPoint(cx, y);

                    // a | B
                    // -----
                    // c | d
                    float bx = Random.Next() * 500;
                    p4 = new CCPoint(bx, y);

                    s = 0.0f;
                    t = 0.0f;
                    if (CCPoint.LineIntersect(p1, p2, p3, p4, ref s, ref t))
                    {
                        if (check_for_error(p1, p2, p3, p4, s, t) != 0)
                        {
                            err++;
                        }
                        else
                        {
                            ok++;
                        }
                    }
                }

                CCLog.Log("Test3 - End. OK=%i, err=%i", ok, err);
                return(true);
            }

            return(false);
        }