summaryrefslogtreecommitdiff
path: root/layers.py
diff options
context:
space:
mode:
Diffstat (limited to 'layers.py')
-rw-r--r--layers.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/layers.py b/layers.py
index 6c1d33f..ceaef1e 100644
--- a/layers.py
+++ b/layers.py
@@ -2,10 +2,10 @@ from PIL import Image
from latLng import latLng
class layer:
- """a generic GPS image layer"""
+ """template for a GPS image layer"""
tl=latLng()
br=latLng()
- pixel=latLng()
+ pixel=(0,0)
def __init__(self,file,ll1,ll2):
try:
self.image=Image.open(file)
@@ -17,8 +17,6 @@ class layer:
self.pixsize=latLng(abs(self.tl.lat-self.br.lat)/self.image.size[1],abs(self.tl.lng-self.br.lng)/self.image.size[0])
except:
print "gps layer: failed to parse", file
- def findpixel(self,pos):
- return (int((pos.lng-self.tl.lng)/self.pixsize.lng),int((pos.lat-self.br.lat)/self.pixsize.lat))
def checkcoord(self,pos):
p=self.findpixel(pos)
if p!=self.pixel:
@@ -26,11 +24,13 @@ class layer:
return self.setcoord(p)
else:
return None
+ def findpixel(self,pos):
+ return (int((pos.lng-self.tl.lng)/self.pixsize.lng),int((pos.lat-self.br.lat)/self.pixsize.lat))
def setcoord(self,pos):
- """constructs a list of messages when values change"
+ """to be overwritten:
+ gets a messages when values change"
returns None otherwise"""
- result=None
- return r
+ return None
class trigger():
"""a generic trigger -
@@ -66,6 +66,19 @@ class scalelayer(layer):
"""generates a varying signal based on interpolating a greyscale image
uses sub pixel position"""
def findpixel(self,pos):
- return (int((pos.lng-self.tl.lng)/self.pixsize.lng),int((pos.lat-self.br.lat)/self.pixsize.lat))
+ #float version
+ return ((pos.lng-self.tl.lng)/self.pixsize.lng,(pos.lat-self.br.lat)/self.pixsize.lat)
+ def setcommand(self,command):
+ self.command=command
def setcoord(self,pos):
- result=None \ No newline at end of file
+ px=int(pos[0])
+ py=int(pos[1])
+ c=float(self.image.getpixel((px,py)))/255.0
+ c1=float(self.image.getpixel((px+1,py)))/255.0
+ c2=float(self.image.getpixel((px,py+1)))/255.0
+ c3=float(self.image.getpixel((px+1,py+1)))/255.0
+ xf=pos[0]-px
+ yf=pos[1]-py
+ #lerp sub-pixel value
+ return (self.command,(((c*(1.0-xf))+(c1*xf))*(1.0-yf))+(((c2*(1.0-xf))+(c3*xf))*yf))
+ \ No newline at end of file