Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
2-1134559351
_Lucifer_
2005-12-14 14:22
2006.01.01
Как вызвать форму из dll?


14-1133884256
oleggar
2005-12-06 18:50
2006.01.01
добавить поле


14-1134125925
Ксардас
2005-12-09 13:58
2006.01.01
После написания каких программ я могу считать, что чего-то...


14-1133859033
Unknowing
2005-12-06 11:50
2006.01.01
Сектор Delphi


14-1134143757
vvvaaa
2005-12-09 18:55
2006.01.01
C++ Builder




   Наверх