Да ладно, я уже успел нагло передрать функции X0 и Y0 из поста xKVtor'а прикрутить их к своей программке. Все сошлось. Теперь осталось только комментарии добить и прочее мелкое украшательство, типа генерации координат точек случайным образом. Но с этим я как-нибудь и сам справлюсь! :twisted:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
c:integer;
a:array [1..4] of array [1..2] of integer;
implementation
uses Unit2;
{$R *.dfm}
Function X0:extended;
Var
chisl,znam:longint;
Begin
chisl:=(a[3,2]-a[2,2])*(a[1,1]*a[1,1]+a[1,2]*a[1,2])+(a[1,2]-a[3,2])*(a[2,1]*a[2,1]+a[2,2]*a[2,2])+
(a[2,2]-a[1,2])*(a[3,1]*a[3,1]+a[3,2]*a[3,2]);
znam :=2*((a[1,2]-a[2,2])*(a[1,1]-a[3,1])-(a[1,2]-a[3,2])*(a[1,1]-a[2,1]));
X0:=chisl/znam;
End;
Function Y0(x0:extended):extended;
Var
chisl,znam:extended;
Begin
chisl:=a[1,1]*a[1,1]-a[2,1]*a[2,1]+a[1,2]*a[1,2]-a[2,2]*a[2,2]-2*(a[1,1]-a[2,1])*x0;
znam :=2*(a[1,2]-a[2,2]);
Y0:=chisl/znam;
End;
procedure PutCircle(X,Y,R:integer; Solid:Boolean);
const
YMax: Integer = 400;
var
MyMetafile: TMetafile;
begin
MyMetafile := TMetafile.Create;
with TMetafileCanvas.Create(MyMetafile, 0) do
try
if Solid then with Brush do
begin
Color := clRed;
Style := bsSolid;
end
else
Brush.Style := bsClear;
Ellipse(X-R,Ymax-(Y-R),X+R,Ymax-(Y+R));
finally
Free;
end;
Form1.Canvas.Draw(0,0,MyMetafile);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
a[1,1]:=257;
a[1,2]:=201;
a[2,1]:=166;
a[2,2]:=279;
a[3,1]:=119;
a[3,2]:=85;
end;
procedure TForm1.Form1Click(Sender: TObject);
var
i,r:byte;
begin
a[4,1]:=round(X0);
a[4,2]:=round(Y0(a[4,1]));
for i:=1 to 3 do
begin
PutCircle(a[i,1],a[i,2],5,True);
end;
r:=round(sqrt(sqr((a[1,1]-a[4,1]))+sqr((a[1,2]-a[4,2]))));
PutCircle(a[4,1],a[4,2],r,False);
end;
end.
Да ладно, я уже успел нагло передрать функции X0 и Y0 из поста xKVtor'а прикрутить их к своей программке. Все сошлось. Теперь осталось только комментарии добить и прочее мелкое украшательство, типа генерации координат точек случайным образом. Но с этим я как-нибудь и сам справлюсь! :twisted: