Главная страница
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.041 c
1-1133518175
.ruslan
2005-12-02 13:09
2006.01.01
812a456f975t149r


2-1134727375
yk
2005-12-16 13:02
2006.01.01
Как определить выходные дни


2-1134542066
ALex_
2005-12-14 09:34
2006.01.01
Языки


3-1131699925
Zoostal
2005-11-11 12:05
2006.01.01
Проблема с FB 1.5 и IBX


14-1133852863
Тульский
2005-12-06 10:07
2006.01.01
Сжималки траффика