def updateAngle(self, masterOrSlave): if not masterOrSlave == self.state: return if self.state: if self.target: self.setAngle(self.angleToTarget(self.installation.getTarget(self.target))) elif self.tertiaryTarget: distance = self.targetXDistance(self.tertiaryTarget) maxAngle = abs(self.angleToTarget( [ float(self.range[1]),0, 1200 ] )) if distance > 0: relevantRange = self.range[1] outOfRange = distance - (int(relevantRange) - int(self.phyLocation[0])) self.setAngle(vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.extRangeX[1]))), maxAngle, 0)) elif distance < 0: relevantRange = self.range[0] outOfRange = int(self.phyLocation[0]) - int(relevantRange) + distance self.setAngle( vm.mapToDomain(outOfRange, 0, -1 * float(abs(relevantRange-float(self.extRangeX[0]))), -1 * float(maxAngle), 0) ) else: raise Exception("Evil's afoot!") elif not self.state: i = 0 comComb = 0 for command in self.commands: comComb += command i += 1 if i == 0: self.setAngle(0) else: self.setAngle(comComb/i)
def updateAngle(self, masterOrSlave): if not masterOrSlave == self.state: return if self.state: if self.target: self.setAngle(self.angleToTarget(self.installation.getTarget(self.target))) elif self.secondaryTarget: distance = self.targetXDistance(self.secondaryTarget) #if self.arrLocation[0] == '0' and self.arrLocation[1] == '4': #print distance #print "distance " + str(distance) #maxAngle = abs(self.angleToTarget( [ float(self.range[1])-float(self.phyLocation[0]),0, 1200 ] )) maxAngle = abs(self.angleToTarget( [ float(self.range[1]),0, 1200 ] )) #print "maxAngle = " + str(vm.radToDeg(maxAngle)) if distance > 0: relevantRange = self.range[1] outOfRange = distance - (int(relevantRange) - int(self.phyLocation[0])) #print outOfRange #print vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.phyLocation[0]))), maxAngle, 0) self.setAngle(vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.phyLocation[0]))), maxAngle, 0)) elif distance < 0: relevantRange = self.range[0] outOfRange = int(self.phyLocation[0]) - int(relevantRange) + distance #print "oor " + str(outOfRange) #print "reR ", relevantRange #print self.phyLocation self.setAngle( vm.mapToDomain(outOfRange, 0, -1 * float(abs(relevantRange-float(self.phyLocation[0]))), -1 * float(maxAngle), 0) ) else: raise Exception("Evil's afoot!") elif not self.state: i = 0 comComb = 0 for command in self.commands: comComb += command i += 1 if i == 0: self.setAngle(0) else: self.setAngle(comComb/i)