Пример #1
0
        bool LineVsCircle(Vector p1, Vector p2, Vector center, float radius)
        {
            Vector lineDir = (p2 - p1);                         // パドルの方向ベクトル
            Vector n       = new Vector(lineDir.Y, -lineDir.X); // パドルの法専ベクトル

            n.Normalize();

            Vector dir1 = center - p1;
            Vector dir2 = center - p2;

            double dist = Math.Abs(DotProduct(dir1, n));
            double a1   = DotProduct(dir1, lineDir);
            double a2   = DotProduct(dir2, lineDir);

            return((a1 * a2 < 0 && dist < radius) ? true : false);
        }
Пример #2
0
        bool PaddleHitCircle(Vector p1, Vector p2, Vector center, float radius)
        {
            // パドルの方向ベクトル
            Vector paddleDir = (p2 - p1);
            // パドルの法線
            Vector n = new Vector(paddleDir.Y, -paddleDir.X);

            n.Normalize();

            Vector dir1 = center - p1;
            Vector dir2 = center - p2;

            double dist = Math.Abs(DotProduct(dir1, n));
            double a1   = DotProduct(dir1, paddleDir);
            double a2   = DotProduct(dir2, paddleDir);

            return((a1 * a2 < 0 && dist < radius) ? true : false);
        }