На плоскости имеется набор окружностей, разного радиуса.
Выявить все окружности, не пересекающиеся с другими.
Помогите с задачкой на паскале
Две окружности с радиусами R1 и R2 и центрами в точках О1 и О2 однозначно не пересекаются, если расстояние между центрами > R1+R2. Далее остается их все попарно сравнить.
Код: Выделить всё
Type TCircle = record
X,Y,Z:Real;
end;
...
...
function IsCrossed(C1,C2:TCircle):Boolean;
begin
IsCrossed := Sqr(C1.X-C2.X) + Sqr(C1.Y-C2.Y) <= Sqr(C1.R+C2.R);
end;
It's a long way to the top if you wanna rock'n'roll
В таком случае
Type TCircle = record
X,Y,R:Real;
Type TCircle = record
X,Y,R:Real;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Гениально!!!
Мне хотелось бы еще и нарисовать эти окружности
Мне хотелось бы еще и нарисовать эти окружности
Form1.Canvas.Ellipse(C.X-C.R, C.Y-C.R, C.X+C.R, C.Y-C.R);
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
это для дельфи прокатит а на паскале самневаюсь
Заменить Form1.Canvas.Ellipse на Circle, предварительно инициировав графический режим экрана.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.