Страница 1 из 1
Помогите с задачкой на паскале
Добавлено: 27 мар 2007, 20:33
nicola
На плоскости имеется набор окружностей, разного радиуса.
Выявить все окружности, не пересекающиеся с другими.
Re: Помогите с задачкой на паскале
Добавлено: 28 мар 2007, 08:52
somewhere
Две окружности с радиусами 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;
Re: Помогите с задачкой на паскале
Добавлено: 28 мар 2007, 09:54
Хыиуду
В таком случае
Type TCircle = record
X,Y,R:Real;
Re: Помогите с задачкой на паскале
Добавлено: 28 мар 2007, 13:08
nicola
Гениально!!!
Мне хотелось бы еще и нарисовать эти окружности
Re: Помогите с задачкой на паскале
Добавлено: 28 мар 2007, 14:32
Хыиуду
Form1.Canvas.Ellipse(C.X-C.R, C.Y-C.R, C.X+C.R, C.Y-C.R);
Re: Помогите с задачкой на паскале
Добавлено: 28 мар 2007, 17:18
nicola
это для дельфи прокатит а на паскале самневаюсь
Re: Помогите с задачкой на паскале
Добавлено: 29 мар 2007, 10:01
Хыиуду
Заменить Form1.Canvas.Ellipse на Circle, предварительно инициировав графический режим экрана.