Геометрическая задачка - C#

Узнай цену своей работы

Формулировка задачи:

Ребят помогите пожалуйста. На плоскости заданы множество точек А и множество окружностей В. Найдите две такие различные точки из А, что проходящая через них прямая пересекается с максимальным количеством окружностей из В.

Решение задачи: «Геометрическая задачка»

textual
Листинг программы
function Peres(a, b: point; c: okr): boolean;{пересекаются или нет}
var
    s, ab, h: real;
begin
    s:= abs(a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y)); {удвоенная площадь треугольника вершины которого центр окружности и 2 точки}
    ab:= sqrt(sqr(a.x - b.x) + sqr(a.y - b.y)); {сторона, противоположная центру окружности}
    h:= s / ab; {высота на нее = расстояние от центра до прямой}
    Peres:= h < c.r;{если оно меньше радиуса, пересекаются}
end;

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы