Индейская изба фигвам получается...
Беру 3 произвольных точки в квадрате 400*400, например:
119,85
257,201
166,279
И выходит, что центр окружности будет примерно в 241,206, т.е. в аккурат рядом со второй точкой...
Даже программку на Дельфях накидал, что убедиться
const
YMax: Integer = 400;
var
Form1: TForm1;
a:array [1..4] of array [1..2] of integer; // координаты точек закинуты в массив a[1,1]=x1, a[1,2]=x2, a[2,1]=x2 и т.д.
MyMetafile: TMetafile;
b1,b2,k1,k2,xa,ya,xb,yb:real;
i:byte;
begin
a[1,1]:=119;
a[1,2]:=ymax-85;
{т.к. ось OY идет сверху вниз, значение Y отнимаем от Ymax,
чтобы график рисовался как положено, а не вверх ногами}
a[2,1]:=257;
a[2,2]:=ymax-201;
a[3,1]:=166;
a[3,2]:=ymax-279;
k1:=(a[1,1]-a[2,1])/(a[1,2]-a[2,2]);
k2:=(a[2,1]-a[3,1])/(a[2,2]-a[3,2]);
xa:=abs(a[1,1]+(a[2,1]-a[1,1])/2);
ya:=abs(a[1,2]+(a[2,2]-a[1,2])/2);
xb:=abs(a[2,1]+(a[3,1]-a[2,1])/2);
yb:=abs(a[2,2]+(a[3,2]-a[2,2])/2);
b1:=ya-k1*xa;
b2:=yb-k2*xb;
{и, наконец, вычисляем координаты центра окружности}
a[4,1]:=round((b2-b1)/(k1-k2)); {это x0}
a[4,2]:=ymax-round(k2*a[4,1]+b2); {а это y0}
{и выводим результаты на экран}
MyMetafile := TMetafile.Create;
for i:=1 to 4 do
begin
with TMetafileCanvas.Create(MyMetafile, 0) do
try
if i<4 then Brush.Color := clRed else Brush.Color := clYellow;
Ellipse(a[i,1]-3,a[i,2]-3,a[i,1]+3,a[i,2]+3);
finally
Free;
end;
Form1.Canvas.Draw(0,0,MyMetafile);
end;
end.
Индейская изба фигвам получается...
Беру 3 произвольных точки в квадрате 400*400, например:
119,85
257,201
166,279
И выходит, что центр окружности будет примерно в 241,206, т.е. в аккурат рядом со второй точкой...
Даже программку на Дельфях накидал, что убедиться