Доброй ночи.
Собственно сижу вот ночью и никак не получается сделать 1 задачку , вот условие : Пользователь должен задать координаты центра окружности (X,Y) и Радиус ® окружности , вписать в неё квадрат , в квадрат - новую окружность , а в новую окружность равносторонний треугольник.
Пока получается только по заданным координатам и радиусу отрисовать окружность :
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToInt(edit1.Text);
y:=StrToInt(edit2.Text);
r:=StrToInt(edit3.Text);
with listbox1.canvas do
begin
Arc(x-r,y-r,x+r,y+r,x-r,y-r,x-r,y-r);
end;
end;
На самом деле все просто:
var x, y, r: integer;
procedure TForm1.Button1Click(Sender: TObject);
var a, r2: integer;
begin
x:=StrToInt(edit1.Text);
y:=StrToInt(edit2.Text);
r:=StrToInt(edit3.Text);
Canvas.Ellipse(x - r, y - r, x + r, y + r); // это первая окружность
a := trunc(r * sqrt(2)); // сторона вписанного квадрата
Canvas.Rectangle(x - a div 2, y - a div 2, x + a div 2, y + a div 2);
r2 := a div 2; // радиус окружности, вписанной в квадрат
Canvas.Ellipse(x - r2, y - r2, x + r2, y + r2);
// а теперь вспоминаем, что такое полярная СК и чертим 3 линии...
Canvas.MoveTo(x, y - r2);
Canvas.LineTo(x + trunc(r2 * cos(210*pi/180)), y - trunc(r2 * sin(210*pi/180)));
Canvas.LineTo(x + trunc(r2 * cos(330*pi/180)), y - trunc(r2 * sin(330*pi/180)));
Canvas.LineTo(x, y - r2);
end;
Хм ... вроде бы и легко , но я бы врятли додумался сам
Огромное спасибо за помощь , уже не первый раз меня выручаете.