Здравствуйте, subdmitry, Вы писали:
S>3. Сложный. Пересечение кругов — это или круг (возможно, нулевого радиуса) или этакий выпуклый многоугольник, у которого вместо строн дуги окружностей. Надо только написать процедуру, которая будет пересекать такую фигуру с очередной окружностью. Как это делать с целым кругом, надеюсь, понятно. Теперь многодугник Для этого будем рассматривать, как новый круг пересекается с каждой из дуг многодугника. Возможны три случая — а) новый круг содержит дугу целиком б) новый круг пересекается с дугой (в этом случае находим точки пересечения и строим на них стороны нового многодугника (эта сторона может заканчиваться как на этой дуге, так и на других дугах)) в) дуга за пределами круга (смотрим пересечения с другими дугами). Это уже точное решение.
ИМХО.
Этот алгортм можно предварить такой стадией:
Круги заменяем квадратам (понятно какими), давольно быстро находим их пересечение, м.б. точку или отрезок.
А уж потом переходим к основной стадии, избегая проверги полного вхождения круга в многодугник...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>