aboutsummaryrefslogtreecommitdiff
path: root/behaviors/Circle.py
blob: 24d71f10ef1e5995a48958e47046317f6c23e196 (plain)
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
from operationscore.Behavior import *
class Circle(Behavior):
    def processResponse(self, sensors, recurs):
        ret = []
        for data in sensors:
            #import pdb; pdb.set_trace()
            if 'CenterLoc' in data:
                xLoc = data['CenterLoc'][0]
                yLoc = data['CenterLoc'][1]
            else:
                data['CenterLoc'] = tuple(data['Location'])
                xLoc = data['Location'][0]
                yLoc = data['Location'][1]
            if not self['Id']+'Radius' in data:
                data[self['Id']+'Radius'] = self['Radius']
            rad = data[self['Id']+'Radius']
            cond = '>=' if self['Outside'] else '<='
            circleStr = 'math.sqrt(({x}-'+str(xLoc)+')**2+(({y}-'+str(yLoc)+')**2))'+cond+str(rad)
            if self['Combine']:
                data['Location'] += ',' + circleStr
            else:
                data['Location'] = circleStr 
            ret.append(data)
        return (ret, [])
    def setLastOutput(self, output):
        coutput = Behavior.deepCopyPacket(output)
        for data in coutput:
            data['Location'] = data['CenterLoc']
        return coutput