forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t))) (http://forum.boolean.name/showthread.php?t=6210)

HolyDel 05.08.2008 17:50

Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Вложений: 1
Ничего не делать мы не можем по определению. Поэтому программеры страдают всякой хней, и пишут всякие прикольные програмки. Вот мне седня попалась интересная формула: R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t))

а вот что получилось:
http://www.forum.likosoft.ru/attachment.ph...mp;d=1217939920

на генерацию "рисунка", точнее на его заблюривание, на моем "пентиуме" окола 5 секунд.

Вложение 4664

Код:

Graphics3D 800,600,32,2
SetBuffer FrontBuffer()
t#=0
Dim pixmap(0,0)

Color 92,192,0
steps = 0

While(steps<50)
        ;Rect(0,0,512,512,0)
        t=t+0.2618;

        R# = (1+Sin(t))*(1-.9*Abs(Sin(4*t)))*(.9+.05*Cos(200*t))
       
        x# = 256 + Sin(t-90) * r*(220-(steps*4))
        y# = 450 - Cos(t-90) * r*(230-(steps*4))
       
       
        If ox=0 Then ox=x
        If oy=0 Then oy=y
        Line x,y,ox,oy
        ox=x
        oy=y
       
        If t>360
                t=0
                steps=steps+1
                ox=0
                oy=0
                Delay(1)
        EndIf
;        Delay(1)
Wend

tex = CreateTexture(512,512)
CopyRect(0,0,512,512,0,0,FrontBuffer(),TextureBuffer(tex))

buff=TextureBuffer(tex)
;LockBuffer buff
BlurBuffer(buff,512,512,2)

;UnlockBuffer buff
q = CreateQuad()
HideEntity q
EntityTexture q,tex
EntityBlend q,3
ScaleEntity q,5,5,5

SetBuffer BackBuffer()

cam = CreateCamera()

Type plan
        Field ent,x#,y#,z#
        Field dx#,dy#,dz#
        Field tx#,ty#
End Type

PositionEntity cam,0,10,-20
PointEntity cam,q

While Not KeyDown(1)
        AddPlan(q)
        UpdatePlans()
        RenderWorld
        Flip
Wend

Function CreateQuad()
        quad=CreateMesh()
        s=CreateSurface(quad)
        v0=AddVertex(s,-1,0,1,0,0)
        v1=AddVertex(s,1,0,1,0,1)
        v2=AddVertex(s,1,0,-1,1,1)
        v3=AddVertex(s,-1,0,-1,1,0)
        AddTriangle(s,v0,v1,v2)
        AddTriangle(s,v0,v2,v3)
        Return quad
End Function

Function AddPlan(ent)
        p.plan = New plan
        p\ent = CopyEntity(ent)
        ShowEntity p\ent
        EntityFX p\ent,1+16
        p\dx=Rnd(-0.5,0.5)
        p\dz=Rnd(-0.5,0.5)
        p\dy=Rnd(0.5,1)
        p\tx=Rnd(-2,2)
        p\ty=Rnd(-5,5)
End Function

Function UpdatePlans()
        For p.plan = Each plan
                TurnEntity p\ent,p\tx,0,0
                TurnEntity p\ent,0,p\ty,0
               
                p\dx=p\dx*0.99
                p\dz=p\dz*0.99
               
                p\dy=p\dy-0.02
               
                TranslateEntity p\ent,p\dx,p\dy,p\dz
                If EntityY(p\ent)<-100
                        FreeEntity p\ent
                        Delete p
                EndIf
        Next
End Function

Function Paint(buff,x,y,clr,maxw,maxh)

        WritePixel(x,y,clr,buff)
        For di=-1 To 1
                For dj=-1 To 1
                        cx = x+di
                        cy = y+dj
                        If cx>=0 And cy>=0 And cx<maxw And cy<maxh
                            cc = ReadPixelFast(cx,cy,buff) And $00FFFFFF
                            ;DebugLog cc
                                If cc=0
                                        Paint(buff,cx,cy,clr,maxw,maxh)
                                EndIf
                        EndIf
                Next
        Next
       
End Function

Function PaintFast(buff,x,y,clr,maxw,maxh)

        WritePixelFast(x,y,clr,buff)
        For di=-1 To 1
                For dj=-1 To 1
                        cx = x+di
                        cy = y+dj
                        If cx>=0 And cy>=0 And cx<maxw And cy<maxh
                            cc = ReadPixelFast(cx,cy,buff) And $00FFFFFF
                            ;DebugLog cc
                                If cc=0
                                        PaintFast(buff,cx,cy,clr,maxw,maxh)
                                EndIf
                        EndIf
                Next
        Next
       
End Function

Function RGB(r,g,b)
Return r Shl 16 Or g Shl 8 Or b
End Function

Function BlurBuffer(buff,width,height,strenght)

        Dim pixmap(width,height)
       
        For i=0 To width-1
                For j=0 To height-1       
                        pixmap(i,j)=ReadPixel(i,j,buff)       
                Next
        Next
       
        For i=0 To width-1
                For j=0 To height-1
                        cnt=0
                        r=0
                        g=0
                        b=0
                        For di=-strenght To strenght
                                For dj=-strenght To strenght
                                        ci = i+di
                                        cj = j+dj
                                       
                                        If ci>=0 And ci<width And cj>=0 And cj<=height
                                                c = pixmap(ci,cj)
                                                r=r+RGBR(c)
                                                g=g+RGBG(c)
                                                b=b+RGBB(c)
                                                cnt=cnt+1
                                        EndIf
                                Next
                        Next
                       
                        WritePixel(i,j,RGB(r/cnt,g/cnt,b/cnt),buff)
                Next
        Next
       
End Function

Function RGBR(v)
        Return (v Shr 16) And $FF
End Function

Function RGBG(v)
        Return (v Shr 8) And $FF
End Function

Function RGBB(v)
        Return v And $FF
End Function


ABTOMAT 05.08.2008 17:58

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
АХАХАХ жжош нереально :-D

Кстати:


x# = 256 + Sin(t-90) * r*(220-(steps*4))
y# = 450 - Cos(t-90) * r*(230-(steps*4))


Синус альфа + 90 = косинус альфа
Косинус альфа + 90 = синус альфа

то есть этот же код можно математически оптимизировать:

x# = 256 + Cos(t) * r*(220-(steps*4))
y# = 450 - Sin(t) * r*(230-(steps*4))

;)

ffinder 05.08.2008 19:04

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
жжош камрад.

dimanche13 05.08.2008 20:53

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
боян

Android 05.08.2008 22:41

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
ЖЕСТЬ! +1 :))))

newman 05.08.2008 23:05

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Цитата:

Сообщение от dimanche13 (Сообщение 83776)
боян

+1

Вроде бы на булке это уже выкладывали... Но это лучше ;)

Tadeus 05.08.2008 23:14

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Цитата:

Сообщение от newman (Сообщение 83783)
+1

Вроде бы на булке это уже выкладывали... Но это лучше ;)

Холег и выкладывал ;)

HolyDel 05.08.2008 23:14

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
я искал свою тему! но не нашел. она пропала. это все происки минздрава.

Tadeus 05.08.2008 23:20

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Цитата:

Сообщение от HolyDel (Сообщение 83787)
я искал свою тему! но не нашел. она пропала. это все происки минздрава.

Неужто и туда масоны пробрались? О_О

ABTOMAT 05.08.2008 23:25

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Да-да-да, это масоны и они мешают нам разводить коноплю!

tormoz 06.08.2008 05:59

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
На улице лето - пляж, пиво, девачки, а оне тут хформулы выводять...
Вот будете старые и больные - ишшо вспомните и будете волосы на жопе рвать, за бесцельно упущенные сиськи :))

newman 06.08.2008 09:55

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
tormoz, а надо просто научиться совмещать ;) .... Только вот не получается :(

ABTOMAT 06.08.2008 10:15

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
До бесцельно упущенных сисек ещё добраться нужно, а это уметь надо :(

HolyDel 06.08.2008 11:19

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Цитата:

На улице лето - пляж, пиво, девачки, а оне тут хформулы выводять...
ы.. город, серость, слякоть, дожди.

Цитата:

Вот будете старые и больные - ишшо вспомните и будете волосы на жопе рвать, за бесцельно упущенные сиськи )
будем, причем при любом раскладе )))

Spiderman 06.08.2008 11:53

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
А если заменить первые строки на такую комбинацию латиницы, то будет сердце:

Код:

Graphics3D 800,600,32,2
SetBuffer FrontBuffer()
t#=0
Dim pixmap(0,0)

Color 192,2,2
steps = 0

While(steps<50)
        t=t+0.2618;
     
      R# = (1+Sin(t))*(2-.2*Abs(Cos(d*t+t)))*(.2-.01*ATan(200*t)+.2)
               
        x# = 400 + Sin(t-90) * r*(220-(steps*4))
        y# = 100 - Cos(t-90) * r*(230-(steps*4))


newman 06.08.2008 12:23

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Код:

R# = (1+Sin(t))*(.1-.9*Abs(Sin(4*t)))*(.1+.05*Cos(200*t))
А так вообще какието листья клевера :-D

ЗЫЖ Конопля начила модифицироваться :-D

HolyDel 06.08.2008 12:29

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
эээ!!! вписывайте рисунок в 512 на 512 квадрат верхнего левого угла!

HolyDel 06.08.2008 12:49

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 
Вложений: 1
во, цветочки:

Код:

Color 192,120,2
steps = 0

While(steps<50)
    ;Rect 0,0,512,512,0
        t=t+0.2618;
     
    R# = Sin(t)*Cos(t)
               
        x# = 256 + Sin(t-90) * r*(210-(steps*4))
        y# = 256 - Cos(t-90) * r*(220-(steps*4))


impersonalis 06.08.2008 18:33

Ответ: Тайна конопли 2 или (R = (1+sin(t))*(1-.9*abs(sin(4*t)))*(.9+.05*cos(200*t)))
 

Цитата:

Сообщение от HolyDel (Сообщение 83813)
ы.. город, серость, слякоть, дожди.

ыы Холи, это у нас в Москве так; я вот вчера от SBJoker-а приехал - вот там погода жжот


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

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