<p>파이썬으로원자를하나만들어두고</p><p>그곳에원자가부디치면멈추게해서쌓고있는데요</p><p><br></p><p><p>scene = display(background=color.white, width=800, height=600 \</p><p> , scale=(0.05,0.05,0.05), forward=(0,-2,-3)) </p></p><p><p>from visual import * </p><p>from random import *</p><p><br></p></p><p><p>atom = []</p><p><br></p><p>for an in range(10000): #여기에서10000개의공생성하고요</p><p> atom.append(sphere(radius=0.5, color=color.red, opacity=0.7)) #안보이게한다음에</p><p> atom[an].visible = False #랜덤으로위치를배정해서요</p><p> atom[an].pos = vector(10*(random()-0.5),55,10*(random()-0.5)) #일단초기에하나를원점에두고요</p><p>atom[0].pos = vector(0,0,0) #보이게해요</p><p>atom[0].visible = True</p><p><br></p><p>down = vector(0,-0.1,0) #공내려가는속도구요</p><p><br></p><p>for an in range(1,10000): #여기서부터공내리는반복문이에요</p><p> loop = True</p><p> atom[an].visible = True #내리려는공을보이게하구요 </p><p> while loop:</p><p> atom[an].pos = atom[an].pos + down #일정한속도로공을아래로내려요</p><p> for nn in range(0,an):</p><p> if type(atom[0])==type(atom[nn]): #기준공과같은타입이고</p><p> if mag(atom[nn].pos - atom[an].pos)<1: #두공사이거리가반지름의2배가되면</p><p> loop = False #그공에대한루프를끝내요</p><p> break</p><p> else:</p><p> if mag(atom[nn] - atom[an].pos)<1: #위랑같은문장</p><p> loop = False</p><p> break</p><p> if atom[an].y<-5: #안부디치고-5까지내려가면</p><p> atom[an].visible = False #공안보이게하구요 </p><p> atom[an] = vector(0,-100,0) #비교는해야되니까쩌아래에배정해요</p><p> loop = False</p><p> break</p><p><br></p><p><br></p><p>대충이런식으로만들었는데요</p><p>초기에는공이별로없어서비교하는연산이금방인데요</p><p>나중에는쌓인공들을전부비교해야하니까</p><p>연산이오래걸려요</p><p>좋은해결방법없을까요??</p><div><br></div></p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.