forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   снежок или монстр ? фрактал .... :) (http://forum.boolean.name/showthread.php?t=403)

jimon 07.12.2005 22:39

теория фракталов - геометрический фракталы - ломаная коха

нарисовавши 3 интернацию на листочке :) мне захотелось чтото зделать на компе
так как c++ я еще нетак хорошо знаю... заюзал блиц :)

вообщем недолго думая, переделал ломаную коха , немного усложнил

вообщем получился монст и снега , в 8 интернаций :)

Код:

Type bla
        Field x1#
        Field y1#
        Field x2#
        Field y2#
End Type

Type bl
        Field x1#
        Field y1#
        Field x2#
        Field y2#
End Type


b.bla=New bla
b\x1#=100
b\y1#=400
b\x2#=800
b\y2#=400




;tochnost'
k#=6.5

;ramzer
i#=300

;internations :)
inter#=7

Graphics 1024,768,16,2
For z=0 To inter
fractal_internation(i)
i=i/Rnd(-k,k)
Next

draw()
Flip
WaitKey


Function draw()
For b.bla=Each bla
Line b\x1,b\y1,b\x2,b\y2
Next

End Function

Function fractal_internation(i)
For b.bla=Each bla


tx1#=b\x1#
tx2#=b\x2#
ty1#=b\y1#
ty2#=b\y2#

d#=Sqr((tx2-tx1)^2+(ty2-ty1)^2)

Delete b

b1.bl=New bl
b2.bl=New bl
b3.bl=New bl
b4.bl=New bl

dx#=(tx2-tx1)/4
dy#=(ty2-ty1)/4

b1\x1#=tx1
b1\y1#=ty1
b1\x2#=dx+tx1
b1\y2#=dy+ty1

b4\x1#=tx2-dx
b4\y1#=ty2-dy
b4\x2#=tx2
b4\y2#=ty2

a#=ACos((tx2-tx1)/d)

If ty1>ty2 Then
zx#=2*dx+tx1-Sin(a)*i
zy#=(2*dy+ty1)-Cos(a)*i
Else
zx#=2*dx+tx1+Sin(a)*i
zy#=(2*dy+ty1)-Cos(a)*i
End If

b2\x1#=dx+tx1
b2\y1#=dy+ty1
b2\x2#=zx
b2\y2#=zy

b3\x1#=zx
b3\y1#=zy
b3\x2#=3*dx+tx1
b3\y2#=3*dy+ty1


Next

For bz.bl=Each bl
b.bla=New bla
b\x1=bz\x1
b\x2=bz\x2
b\y1=bz\y1
b\y2=bz\y2
Delete bz

Next

End Function


:))

а что мона будет зделать заюзавши еще пару формул ? - много чего B)

pax 15.12.2005 22:40

Крута. :super:
У меня мозгов не хватит такое придумать :lol:

SubZer0 15.12.2005 23:10

немного поигрался с коэффициентами:

Код:

Type bla
        Field x1#
        Field y1#
        Field x2#
        Field y2#
End Type

Type bl
        Field x1#
        Field y1#
        Field x2#
        Field y2#
End Type


b.bla=New bla
b\x1#=100
b\y1#=400
b\x2#=800
b\y2#=400



;tochnost'
k#=6.5

;ramzer
i#=300

;internations :)
inter#=6

Graphics 1024,768,16,2
For z=0 To inter
fractal_internation(i)
i=i/Rnd(-k,k+2)
Next

draw()
Flip
WaitKey


Function draw()
For b.bla=Each bla
Line b\x1,b\y1,b\x2,b\y2
Next

End Function

Function fractal_internation(i)
For b.bla=Each bla


tx1#=b\x1#
tx2#=b\x2#
ty1#=b\y1#
ty2#=b\y2#

d#=Sqr((tx2-tx1)^2+(ty2-ty1)^2)

Delete b

b1.bl=New bl
b2.bl=New bl
b3.bl=New bl
b4.bl=New bl

dx#=(tx2-tx1)/4
dy#=(ty2-ty1)/4

b1\x1#=tx1
b1\y1#=ty1
b1\x2#=dx+tx1
b1\y2#=dy+ty1

b4\x1#=tx2-dx
b4\y1#=ty2-dy
b4\x2#=tx2
b4\y2#=ty2

a#=ACos((tx2-tx1)/d)

If ty1>ty2 Then
zx#=2*dx+tx1-Sin(a)*i
zy#=(2*dy+ty1)-Cos(a)*i
Else
zx#=2*dx+tx1+Sin(a)*i
zy#=(2*dy+ty1)-Cos(a)*i
End If

b2\x1#=dx+tx1
b2\y1#=dy+ty1
b2\x2#=zx
b2\y2#=zy

b3\x1#=zx
b3\y1#=zy
b3\x2#=3*dx+tx1
b3\y2#=3*dy+ty1


Next

For bz.bl=Each bl
b.bla=New bla
b\x1=bz\x1
b\x2=bz\x2
b\y1=bz\y1
b\y2=bz\y2
Delete bz

Next

End Function

8)

jimon 16.12.2005 21:32

так можно задающию линию , или задающии линии зделать разными :)

Код:


b.bla=New bla
b\x1#=100
b\y1#=400
b\x2#=400
b\y2#=400

b.bla=New bla
b\x1#=400
b\y1#=400
b\x2#=800
b\y2#=0

:)

johnk 05.05.2007 14:34

Re: снежок или монстр ? фрактал .... :)
 
Прикольно! :)

c0mrad 05.05.2007 14:42

Re: снежок или монстр ? фрактал .... :)
 
Скрин!Скрин!Скрин!
Дайте скрин,а то блица нету уже.

ZanoZa 05.05.2007 17:23

Re: снежок или монстр ? фрактал .... :)
 
ну вы и темы поднимаете :)

johnk 05.05.2007 17:56

Re: снежок или монстр ? фрактал .... :)
 
А что не так? :)


Часовой пояс GMT +4, время: 17:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot