1,185
社区成员




r:= Sqrt(Sqr(Ox-Bx)+Sqr(Oy-By)); //圆半径
Canvas.Ellipse(Round(Ax)-2,Round(Ay)-2,Round(Ax)+2,Round(Ay)+2); //标识出A点位置
Canvas.Ellipse(Round(Bx)-2,Round(By)-2,Round(Bx)+2,Round(By)+2); //标识出B点位置
Canvas.Ellipse(Round(Cx)-2,Round(Cy)-2,Round(Cx)+2,Round(Cy)+2); //标识出C点位置
Canvas.Ellipse(Round(Ox-r),Round(Oy-r),Round(Ox+r),Round(Oy+r)); //画圆
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Ax,Ay,Bx,By,Cx,Cy: Single;
Ox,Oy: Single;
r: Single;
begin
Ax:= StrToFloatDef(InputBox('输入A点x坐标', 'Ax =', '78.3'),78.3);
Ay:= StrToFloatDef(InputBox('输入A点y坐标', 'Ay =', '78.3'),78.3);
Bx:= StrToFloatDef(InputBox('输入B点x坐标', 'Bx =', '10'), 10);
By:= StrToFloatDef(InputBox('输入B点y坐标', 'By =', '60'),60);
Cx:= StrToFloatDef(InputBox('输入C点x坐标', 'Cx =', '60'),60);
Cy:= StrToFloatDef(InputBox('输入C点y坐标', 'Cy =', '10'), 10);
Ox:= ((Cy-Ay)*(By*By-Ay*Ay+Bx*Bx-Ax*Ax)+(By-Ay)*(Ay*Ay-Cy*Cy+Ax*Ax-Cx*Cx))/(2*(Bx-Ax)*(Cy-Ay)-2*(Cx-Ax)*(By-Ay));
Oy:= ((Cx-Ax)*(Bx*Bx-Ax*Ax+By*By-Ay*Ay)+(Bx-Ax)*(Ax*Ax-Cx*Cx+Ay*Ay-Cy*Cy))/(2*(By-Ay)*(Cx-Ax)-2*(Cy-Ay)*(Bx-Ax));
r:= Sqrt(Sqr(Ox-Bx)+Sqr(Oy-By));
ShowMessage(FormatFloat('0.00',r));
Canvas.Ellipse(Round(Ax)-2,Round(Ay)-2,Round(Ax)+2,Round(Ay)+2);
Canvas.Ellipse(Round(Bx)-2,Round(By)-2,Round(Bx)+2,Round(By)+2);
Canvas.Ellipse(Round(Cx)-2,Round(Cy)-2,Round(Cx)+2,Round(Cy)+2);
Canvas.Ellipse(Round(Ox-r),Round(Oy-r),Round(Ox+r),Round(Oy+r));
end;