Commit d975a3105ed507c302d33d0894600ad51ab3f7c1

Authored by Anthex
1 parent a44804db

fix mapping from values to images, now works with steps/emitters that are out of…

… bounds compared to the initial situation
Showing 2 changed files with 21 additions and 9 deletions   Show diff stats
@@ -281,13 +281,14 @@ def NLateration(data, step=.1, xSize=0.0, ySize=0.0, zSize=0.0): @@ -281,13 +281,14 @@ def NLateration(data, step=.1, xSize=0.0, ySize=0.0, zSize=0.0):
281 ''' 281 '''
282 minLoc = Location() 282 minLoc = Location()
283 minDist = 0.0 283 minDist = 0.0
  284 + revStep = ceil(1/step)
284 #gifArray = [] 285 #gifArray = []
285 for k in data: 286 for k in data:
286 minDist += abs(k[0].distanceTo(Location()) - k[1]) 287 minDist += abs(k[0].distanceTo(Location()) - k[1])
287 xSize = k[0].x if k[0].x > xSize else xSize 288 xSize = k[0].x if k[0].x > xSize else xSize
288 ySize = k[0].y if k[0].y > ySize else ySize 289 ySize = k[0].y if k[0].y > ySize else ySize
289 zSize = k[0].z if k[0].z > zSize else zSize 290 zSize = k[0].z if k[0].z > zSize else zSize
290 - imageArray=[[] for i in range(0,floor(zSize*10))] 291 + imageArray=[[] for i in range(0,floor(zSize*revStep))]
291 for k in arange(0,xSize,step): 292 for k in arange(0,xSize,step):
292 for l in arange(0,ySize,step): 293 for l in arange(0,ySize,step):
293 for m in arange(0,zSize,step): 294 for m in arange(0,zSize,step):
@@ -298,5 +299,5 @@ def NLateration(data, step=.1, xSize=0.0, ySize=0.0, zSize=0.0): @@ -298,5 +299,5 @@ def NLateration(data, step=.1, xSize=0.0, ySize=0.0, zSize=0.0):
298 minDist = d 299 minDist = d
299 minLoc = Location(round(k,2),round(l,2),round(m,2)) 300 minLoc = Location(round(k,2),round(l,2),round(m,2))
300 d = (max(1-d/10.0, 0))**2 301 d = (max(1-d/10.0, 0))**2
301 - imageArray[floor(l*10)].append((250-floor(360-d*360), 255, floor(50+d*200)))  
302 - return (minLoc, minDist, imageArray[0], floor(ySize/step), floor(xSize/step), imageArray) 302 + imageArray[floor(m*revStep)].append((265-floor(360-d*360), 255, floor(50+d*200)))
  303 + return (minLoc, minDist, imageArray[0], floor(xSize*revStep), floor(ySize*revStep), imageArray)
@@ -2,24 +2,35 @@ from structure import NLateration, Location @@ -2,24 +2,35 @@ from structure import NLateration, Location
2 from math import floor, sqrt 2 from math import floor, sqrt
3 from PIL import Image, ImageDraw 3 from PIL import Image, ImageDraw
4 4
5 -dataset = [(Location(.5,.5,.5), 3.0), (Location(4.0,.0,.0), 2.0), (Location(4.0,5.0,5.0), 4.2), (Location(3.0,3.0,3.0), 2.5)]  
6 -NLat_result = NLateration(dataset) 5 +global_step=.05
  6 +dataset = [(Location(.5,.5,.5), 3.0), (Location(4.0,.0,.0), 2.0), (Location(4.0,5.0,5.0), 4.2)]
  7 +NLat_result = NLateration(dataset, step=global_step)
7 W,H = NLat_result[3], NLat_result[4] 8 W,H = NLat_result[3], NLat_result[4]
8 frames = [] 9 frames = []
9 dummy = [0 for _ in range(len(NLat_result[5][0]))] 10 dummy = [0 for _ in range(len(NLat_result[5][0]))]
10 11
11 def createFrame(x,y,nbr): 12 def createFrame(x,y,nbr):
12 - img = Image.new("HSV",(x,y)) 13 + img = Image.new("HSV",(y,x))
13 img.putdata(NLat_result[5][nbr]) 14 img.putdata(NLat_result[5][nbr])
14 return img 15 return img
15 16
  17 +
16 def exportGif(): 18 def exportGif():
17 for i in range(len(NLat_result[5])): 19 for i in range(len(NLat_result[5])):
18 newFrame = createFrame(W,H,i) 20 newFrame = createFrame(W,H,i)
  21 + newFrame = newFrame.resize((W*10,H*10), Image.BICUBIC)
  22 + draw = ImageDraw.Draw(newFrame)
  23 + draw.text(text="z="+str(round(i*global_step,2)), xy=(0,0))
  24 + frames.append(newFrame)
  25 +
  26 + for i in range(len(NLat_result[5])):
  27 + newFrame = createFrame(W,H,len(NLat_result[5])-i-1)
19 newFrame = newFrame.resize((W*10,H*10), Image.ANTIALIAS) 28 newFrame = newFrame.resize((W*10,H*10), Image.ANTIALIAS)
20 draw = ImageDraw.Draw(newFrame) 29 draw = ImageDraw.Draw(newFrame)
21 - draw.text(text="z="+str(i), xy=(0,0)) 30 + draw.text(text="z="+str(round(((len(NLat_result[5])-i-1)*global_step),2)), xy=(0,0))
22 frames.append(newFrame) 31 frames.append(newFrame)
23 -  
24 - frames[0].save("out.gif", format="GIF", append_images=frames[1:], save_all=True, duration=100, loop=0) 32 +
  33 + frames[0].save("out.gif", format="GIF", append_images=frames[1:], save_all=True, duration=20, loop=0)
25 print("gif exported") 34 print("gif exported")
  35 +
  36 +exportGif()
26 \ No newline at end of file 37 \ No newline at end of file