forum.boolean.name

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

moka 25.05.2014 22:40

Ответ: 2d сетка
 
Цитата:

Сообщение от polopok (Сообщение 281446)
Думаю не стоит так переживать , тут главное формулы правильные вывести ,а там можно под любой язык или среду переписать.
Признаться пишу от безделия , а так хоть мозг не атрафируется и чтоб труды не пропали даром выкладываю сюда.

Дык тем более. JS на много ближе к любому другому языку, нежели блиц. JS знают на много больше людей, и у тебя напрямую будет в интернете что-то лежать, и гуглиться.
Труд твой тут в большинстве как раз и пропадает, те кому нужно - сами напишут, а те кто не может сам, будет искать на его языке что-то, или приблизительное. А на блице сейчас ничего не делают (про тех кто сидит в прошлом не говорю, "им не поможешь").
А вот польза от JS мелкой демки такого рода, где-то с заголовком и пару строками описания, гуглятся отлично и народу пригодится. Пользы больше, и тебе приятнее думаю было бы.

polopok 26.05.2014 00:04

Ответ: 2d сетка
 
Мдаа... Ты трав . А то зациклился на блице ))) , самому смешно .

polopok 26.05.2014 00:10

Ответ: 2d сетка
 
Вопрос писать на java или на javascript

St_AnGer 26.05.2014 00:13

Ответ: 2d сетка
 
Ну, предполагаю, что Максим имел ввиду именно JavaScript, а не на Java.

moka 26.05.2014 00:28

Ответ: 2d сетка
 
JavaScript.
Java требует компиляции и предустановленной всякой хрени. И вообще не имеет ничего общего с JavaScript'ом. :) Хотя у обоих С подобный скрипт и название схожее. Но на этом их сходства заканчиваются.

Плюс JS в том что он работает во ВСЕХ броузерах. Поддержка того же canvas 2d есть практически везде сейчас (даже в IE9 который уже старьё и поддерживать не стоит).
И можно просмотреть исходники сразу. И там же демки показывать - удобно очень.

Рекомендую начать с простого, вот ресурсы которые стоит использовать:
MDN - там документация по JavaScript'у одна из наилучших, так же они отлично описывают разные API и стандарты, с примерами и пометками "на все случаи жизни". Если что-то ищешь по JS в гугле, добавляй "mdn" и будет хорошая инфа.

HTML5 Canvas Tutorials - очень удобная и доступная документация по canvas 2d с примерами и детальной документацией. Примеры есть на всё. По сути там описан практически весь функционал canvas 2d.

CodePen - отличная тулза для прототипирования, и вообще можно там писать код, и сразу есть превью, и выкладывать это онлайн, другие могут также обновлять. "Доступно и приятно" :)

Да и новый язык изучить - всегда полезно, тем более такой как JS который имеет уйму применений, как в веб разработке, игр (canvas, webgl, да и iOS скоро будет поддерживать webgl - инфа 100%!), так и на стороне сервера - node.js.

polopok 26.05.2014 00:33

Ответ: 2d сетка
 
Кстати , пытаюсь 2д сетку в шарообразную сетку сделать , пока то ,что получилось.
если сталкивались с данной темой киньте ссылку .
Код:

time = CreateTimer(60)
Global x,y
Const tt = 18 ,r2 = 70
Dim mapX(324,324),mapY(324,324) ,mapR(324,324) ,mapG(324,324) ,mapB(324,324)

Graphics 800,600,32,2
SetBuffer BackBuffer()


For b=1 To tt ;Step 0.5
For a =1 To tt ;Step 0.5

        SphireView(a*20,b*20)
        mapX(a,b) = x
        mapY(a,b) = y
        mapR(a,b) = Rnd(225)
        mapG(a,b) = Rnd(225)
        mapB(a,b) = Rnd(225)
Next
Next
While Not KeyHit(1)
mx = MouseX()/20 :my = MouseY()/20
mxx =  r2*(Cos(mx*20)*Sin(my*20))
myy= r2*(Cos(my*20))  ;
Cls
WaitTimer(time)       
For b=1 To tt ;Step 0.5
For a = 1 To tt ;Step 0.5
Color mapR(a,b) , mapG(a,b) ,mapB(a,b)
Rect a*20,b*20,20,20,1
Rect mapX(a,b)+550-10,mapY(a,b)+200-10  , 20,20
;Plot mapX(a,b)+550,mapY(a,b)+200
Next
Next
Color 255,0,0
Rect mx*20,my*20,20,20,0
Rect mxx+550-10,myy+200-10,20,20,0
Color 255,255,255

Flip
Wend
FreeTimer timer
End

Function SphireView#(x1,y1)
x= r2*(Cos(x1)*Sin(y1))
y= r2*(Cos(y1))  ;(Sin(x1)-


End Function



javascript так javascript ... :-D

polopok 20.08.2015 20:25

Ответ: 2d сетка
 
После продолжительного затишья ...
код шарообразной сетки :-D .
(пока не кликабельно :) )
Код:

Graphics 800,600,32,2
SetBuffer BackBuffer()

num = 10


r#=242
n# = 4*num
a# = 4.0
r2=90

While Not KeyHit(1)
Cls
If KeyDown(200) r = r +1
If  KeyDown(208) r = r -1
If  KeyDown(203) a = a +.1
If a >= 0.1 And KeyDown(205) a = a -.1

For y = -num To num
For x = -num To num
        a1# = 180/(num*a)*x
        a2# = 180/(num*a)*y
                vx# = Cos(a1-r2)*Cos(a2)  ;*r
                vy# = Cos(a1)*Sin(a2)  ;*r
        Plot 400+ (x)+(vx)*r, 300+(y)+vy*r
        Text 400+ (x)+(vx)*r, 300+(y)+vy*r ,(x*y)
Next
Next

Text 20,20,"angle =  "+a+"  Radius =  "+r

Flip
Wend
End


polopok 20.08.2015 20:30

Ответ: 2d сетка
 
Ну и в нагрузку облако тегов :-D с определением по ближней полусфере.
Код:

time = CreateTimer(60)
Dim CosA#(3600)
Dim SinA#(3600)

For i# = 0 To 3600 Step 0.1
CosA(i)= Cos(i)
SinA(i)= Sin(i)
Next

Graphics 800,600,32,2
SetBuffer BackBuffer()

numpnt=200
radius =200

Dim x#(numpnt) ,y#(numpnt) ,z#(numpnt) ,name$(numpnt)

c# = 0 : a# = 0 : b# =0 : q#=1
p# = numpnt * Pi
        For n=1 To numpnt
                f#=ACos(-1+ (n* Pi) / numpnt*q)
                t# = Sqr(p)  *f
               
                x(n) = (radius * Sin(f) * Cos(t));
                y(n) = (radius * Sin(f) * Sin(t));
                z(n) = (radius * Cos(f));                               
                name(n) = "target_"+Str(n)               
        Next
While Not KeyHit(1)
Cls
mx# =MouseX() : my#= MouseY()       

WaitTimer(time)       
        For n=1To numpnt       
        sa#=Sin(a):ca#=Cos(a):sb#=Sin(b):cb#=Cos(b):sc#=Sin(c): cc#=Cos(c)

        xx# = x(n)*cb*cc - y(n)*cb*sc+ z(n)*sb;
        yy# = x(n)*(cc*sa*sb+ca*sc)+y(n)*(ca*cc-sa*sb*sc)- z(n)*(cb*sa);
        zz# =-x(n)*(ca*cc*sb+sa*sc)+y(n)*(cc*sa+ca*sb*sc)+ z(n)*(ca*cb);

        vv = Int(zz/3)

        Color 128+vv,128+vv,128+vv
        If RectsOverlap ((xx+400),(yy+300),StringWidth(name(n) ),StringHeight(name(n) )  ,(mx),(my),1,1) And zz>0
        Color 0,0,255
        Rect        400+ xx-4 , 300+ yy ,50,15 ,0
        EndIf
                Text 400+ xx , 300+ yy, name(n)
                       
               
       
        Next
       

        If b=360 b=0
        b=b+1
        c=b*0.1
Flip
Wend
FreeTimer(time)
End


moka 20.08.2015 21:13

Ответ: 2d сетка
 
А можно скрины? Думаю тут мало у кого блиц остался на компах..

Arton 20.08.2015 22:38

Ответ: 2d сетка
 

polopok 30.08.2015 08:16

Ответ: 2d сетка
 
Шарообразная сетка с выбором ячейки (при необходимости допилить :-D )
код:
Код:

;


Graphics 800,600,32,2
SetBuffer BackBuffer()

num = 10


r#=242
n# = 4*num
a# = 4.0
r2=90

While Not KeyHit(1)
Cls
mx# =MouseX() : my#= MouseY()       
If KeyDown(200) r = r +1
If  KeyDown(208) r = r -1
If  KeyDown(203) a = a +.1
If a >= 0.1 And KeyDown(205) a = a -.1

For y = -num To num
For x = -num To num
        a1# = 180/(num*a)*x
        a2# = 180/(num*a)*y
                vx# = Cos(a1-r2)*Cos(a2)  ;*r
                vy# = Cos(a1)*Sin(a2)  ;*r
                px# = 400+ (x)+(vx)*r
                py# = 300+(y)+vy*r
        Plot px, py
        Text px, py ,(x*y)
       
        If RectsOverlap ((px+2),(py),15,10  ,(mx),(my),1,1)
                Rect        px-4 , py ,20,10 ,0
        EndIf
Next
Next

Text 20,20,"angle =  "+a+"  Radius =  "+r

Flip
Wend
End


polopok 01.09.2015 15:47

Ответ: 2d сетка
 
использование безье кривых 3 порядка для создания сетки
( несколько коряво написан код :-D ) контрольные точки двигать мышью ... автовыбор точки по наведению , а потом кликать , кликать и кликать . . . :4to:
сам код :

Код:

Const n = 7
time = CreateTimer(60)

Global px#[7],py#[7]

Graphics 800,600,32,2
SetBuffer BackBuffer()
px[0] = 100 : py[0] = 100
px[1 ]= 100 : py[1] = 50
px[2] = 200 : py[2] = 50
px[3 ]= 200 : py[3] = 100

px[4] = 300 : py[4] = 300
px[5 ]= 100 : py[5] = 150
px[6 ]= 400 : py[6] = 150
px[7 ]= 400 : py[7] = 300

b# = 1.0/300
b2# = 1.0/300

While Not KeyHit(1)
Cls
mx = MouseX() : my=MouseY()
WaitTimer(time)
Color 255,5,5
For p = 0 To 7

If Dist(px[p] ,py[p],mx,my)<15
        Rect px[p]- 4,py[p]-4,8,8,0
        ppp= p
EndIf
        If MouseDown(1)
        px[ppp] = mx
        py[ppp] = my
        Oval mx-10,my-10, 20,20,0
        EndIf

Next
t# = b

buff = BackBuffer()
LockBuffer buff
While t <1.01
        t2# = b2
        qx1#= Bezie3Q( Px[0],Px[1],Px[2] ,Px[3],t)
        qy1#=Bezie3Q (Py[0],Py[1],Py[2] ,Py[3],t)               

        While t2 <1.01
        qx2#= Bezie3Q( Px[4],Px[5],Px[6] ,Px[7],t)
        qy2#=Bezie3Q (Py[4],Py[5],Py[6] ,Py[7],t)
       
        x# = BezeQ(qx1,qx2,t2 )
        y# = BezeQ(qy1,qy2,t2 )
               
        WritePixel x+1,y,$333333 ,buff
        WritePixel x,y,$cccccc ,buff
        WritePixel x,y+1,$ccccff,buff
       
        WritePixel qx2,qy2,$ff0000,buff
        WritePixel qx1,qy1,$ff0000,buff
        t2 = t2 + b2
        Wend
       
        t = t + b
Wend
UnlockBuffer buff
For p = 0 To 7
        Rect  px[p]- 2,py[p]-2,4,4,1
Next
Color  128,228,228
Line px[0] ,py[0] ,px[1 ],py[1 ]
Line px[3] ,py[3] ,px[2] ,py[2]
Line px[4] ,py[4] ,px[5] ,py[5 ]
Line px[6] ,py[6] ,px[7] ,py[7 ]

Text 20,20,"Point selct N -  "+ppp
Flip
Wend
FreeTimer time
End



Function Dist#( X1#, Y1#, X2#, Y2# )
        Return (( (X1 - X2)*(X1 - X2) + (Y1 - Y2)*(Y1 - Y2) )^0.5)
End Function

Function Bezie3Q#(P0#,P1#,P2#,P3#,Tt# )
        Return ( (1.0-Tt)^3*P0 + 3*(1.0-Tt)^2*Tt*P1 +3*(1.0-Tt)*Tt^2*P2 + Tt^3*P3 )
End Function

Function BezeQ#(pp0#,pp1#,tt# ) ; pp0 -> x or y or z ... | pp1  -> x,y,z ... next or end point
        Return ( (1.0-tt)*pp0+tt*pp1)
End Function


moka 01.09.2015 16:29

Ответ: 2d сетка
 
Вот бы эти демки на js'е писал, в codepen (например).
И в нете выкладывал, на twitter'е (например).

Их бы запустили не 2-3 человека, а сотни или тысячи, полюбовались, и кто-то чему-то научился бы.

polopok 01.09.2015 16:46

Ответ: 2d сетка
 
:crazy: каюсь до JS руки не доходят ,а тут на блице привычнее

St_AnGer 01.09.2015 16:59

Ответ: 2d сетка
 
Цитата:

Сообщение от polopok (Сообщение 299191)
:crazy: каюсь до JS руки не доходят ,а тут на блице привычнее

Но ведь мало кто может посмотреть результат работы твоих алгоритмов... Блиц то мало у кого остался скорее всего (даже у меня он где то далеко далеко в глубинах старого винта валяется, и, запустить его нету возможностей). Остаётся только рисовать в голове работу алгоритма. Прикладывай хотя бы скриншоты, а лучше всё таки переходи на распространённые нынче вещи :)


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

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