Помощь - Поиск - Пользователи - Календарь
Полная версия: Опять геометрия в Delphi
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
diehard
Доброй ночи.

Собственно сижу вот ночью и никак не получается сделать 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;




как отрисовать остальные объекты непойму wacko.gif может быть кто то уже решал подобное ? читал FAQ и DRKB , но ничего подходящего не нашёл sad.gif
volvo
На самом деле все просто:

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;
diehard
Хм ... вроде бы и легко , но я бы врятли додумался сам mega_chok.gif
Огромное спасибо за помощь , уже не первый раз меня выручаете. good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.