так какой оператор правильный?

исал это обнаружение пересечения окружности послеhttp://mathworld.wolfram.com/Circle-LineIntersection.html, но это похоже на то, или я что-то упустил.

    public static bool Intersect
    (Vector2f CirclePos, float CircleRad, Vector2f Point1, Vector2f Point2)
    {
        Vector2f p1 = Vector2f.MemCpy(Point1);
        Vector2f p2 = Vector2f.MemCpy(Point2);

        // Normalize points
        p1.X -= CirclePos.X;
        p1.Y -= CirclePos.Y;
        p2.X -= CirclePos.X;
        p2.Y -= CirclePos.Y;

        float dx = p2.X - p1.X;
        float dy = p2.Y - p1.Y;
        float dr = (float)Math.Sqrt((double)(dx * dx) + (double)(dy * dy));
        float D = p1.X * p2.Y * p2.X - p1.Y;

        float di = (CircleRad * CircleRad) * (dr * dr) - (D * D);

        if (di < 0) return false;
        else return true;
    }

Единственный случай, когда он возвращает истину, это когдаPoint2 находится в кругу. Что я делаю неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос