1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
import pyext
import sys
from numarray import *
class tixel_coords(pyext._class):
# number of inlets and outlets
_inlets=1
_outlets=1
# Vars
numWide = float(4)
numHigh = float(3)
sectionWidth = float()
sectionHeight = float()
myarray = array()
print "tixel_coords init"
# Definitions
# Constructor
def __init__(self,*args):
if len(args) == 2:
self.numWide = args[0]
self.numHigh = args[1]
self.sectionWidth = 1.0/self.numWide
self.sectionHeight = 1.0/self.numHigh
self.myarray = arange(self.numWide*self.numHigh, shape=(self.numHigh,self.numWide), type=Int)
else:
print "External requires 4 arguments: <numWide> <numHeight>"
# methods for first inlet
def bang_(self,n):
for i in xrange(int(self.numWide)):
for j in xrange(int(self.numHigh)):
left = float(i)*self.sectionWidth
right = left + self.sectionWidth
bottom = float(j)*self.sectionHeight
top = bottom+self.sectionHeight
x = self.myarray[j,i]
# constructing list for each tixel
self._outlet(1,x,"coords",left,right,top,bottom)
class int2bytes(pyext._class):
# number of inlets and outlets
_inlets=1
_outlets=4
print "int2bytes init"
# Constructor
# methods
def float_1(self,number):
number = int(number)
for count in xrange(4):
byte = (number & 0xF000) >> 12
number <<=4
self._outlet(count+1,byte)
class seekArray3d(pyext._class):
# number of inlets and outlets
_inlets=1
_outlets=1
print "seekArray init"
# Vars
width = int()
height = int()
depth = int()
index = array()
# Constructor
def __init__(self,*args):
if len(args) == 3:
self.width = args[0]
self.height = args[1]
self.depth = args[2]
self.index = arange(self.width*self.height*self.depth,type=Int32,shape=(self.depth,self.height,self.width))
else:
print "you need to specify at least three aguments: <width> <height> <depth>"
# methods
def seek_1(self,*l):
if len(l) == 3:
zoom = l[0]
tilt = l[1]
pan = l[2]
position = self.index[zoom+1,tilt+1,pan]
self._outlet(1,position)
else:
print "you need to specify at least three aguments: seek <zoom> <tilt> <pan>"
def float_1(self,number):
number = int(number)
for count in xrange(4):
byte = (number & 0xF000) >> 12
number <<=4
self._outlet(count+1,byte)
|