Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Пифагорово дерево   Найти похожие ветки 

 
Yegorchic ©   (2005-12-11 20:33) [0]

Здравствуйте! Помогите пожалуйста построить пифагорово дерево. Я пытался сделать, но не очень у меня получалось.
Вообщем, что бы построить "первую партию" веток, у меня получлся такой код:

x0:=320;
y0:=390;
Form1.Canvas.MoveTo(320, 480);
Form1.Canvas.LineTo(x0, y0);
l:=vlength(320, 480, x0, y0);
for i:=0 to 2 do
 begin
   x:=round(cos(45)*0.56*l);
   y:=x;
   x:=x0-x;
   y:=y0-y;
   l:=vlength(x0, y0, x, y);
   Form1.Canvas.LineTo(x, y);
   x0:=x;
   y0:=y;
 end;;


Но строятся они несовсем верно... Вообщем, подскажите, какая общая формла для построения этих веток нужна?


 
DrPass ©   (2005-12-11 20:51) [1]

Черт его знает... а поливаешь ты свое дерево чем?


 
Yegorchic ©   (2005-12-11 21:03) [2]

Да ничем пока! Оно ещё не родилось, так сказать... =(


 
Lamer@fools.ua ©   (2005-12-11 21:10) [3]

Алгоритм, вроде, здесь описан:
http://neerc.ifmo.ru/school/1995-1996/ru-olymp-spb-1996-region.html


 
Yegorchic ©   (2005-12-11 22:28) [4]

Неее... он там не описан... это я только оттуда задачи брал...


 
Zeqfreed ©   (2005-12-11 23:39) [5]

procedure DrawBranch(const Canvas : TCanvas; depth, xPos, yPos, len : Integer; angle : Single);
var
x, y : Integer;
begin
if (depth <= 0) then Exit;

x := Round(-(len) * sin(angle));
y := Round(+(len) * cos(angle));

Canvas.MoveTo(xPos, yPos);
Canvas.LineTo(xPos - x, yPos - y);

DrawBranch(Canvas, depth - 1, xPos - x, yPos - y, Round(len * 0.56), angle - Pi/4);
DrawBranch(Canvas, depth - 1, xPos - x, yPos - y, Round(len * 0.56), angle + Pi/4);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawBranch(PaintBox1.Canvas, 9, PaintBox1.Width div 2, PaintBox1.Height - 8, 200, 0);
end;


Спасибо за задачу. Хоть немножко мозг поразмял. :)



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
8-1122036614
vladgul
2005-07-22 16:50
2006.01.01
Picture Transfer Protocol (PTP). Получение изображения с камеры.


14-1134032272
AlexReal
2005-12-08 11:57
2006.01.01
DSL


6-1127280679
VadimX
2005-09-21 09:31
2006.01.01
Как проверить анонимность прокси


2-1134650804
fast2
2005-12-15 15:46
2006.01.01
Как создать директорию вместе с родительскими директориями?


14-1133884054
ПЛОВ
2005-12-06 18:47
2006.01.01
Посоветуйте программу