Esempio n. 1
0
    def generateObject(self, availableId):
        object = None
        while object is None:
            if time.time() - self.generation_time > MAX_GENERATION_WAIT:
                raise RuntimeError('MAX_GENERATION_ATTEMPTS')
            if QtCore.qrand() % 3 == 0:
                xx = int(random.normalvariate(0, 150))
                yy = int(random.normalvariate(0, 150))
            else:
                xx = QtCore.qrand() % 800 - 400
                yy = QtCore.qrand() % 800 - 400
            object = RegularObject(availableId, xx, yy,
                                   (QtCore.qrand() % 360) - 180)
            if not self.room.containsPolygon(object.polygon()):
                object = None

        return object
Esempio n. 2
0
 def generateComplementaryObject(self, human, availableId):
     a = math.pi * human.angle / 180.
     dist = float(QtCore.qrand() % 250 + 50)
     obj = None
     while obj is None:
         if time.time() - self.generation_time > MAX_GENERATION_WAIT:
             raise RuntimeError('MAX_GENERATION_ATTEMPTS')
         xPos = human.xPos + dist * math.sin(a)
         yPos = human.yPos - dist * math.cos(a)
         obj = RegularObject(availableId, xPos, yPos,
                             (human.angle + 180) % 360)
         if not self.room.containsPolygon(obj.polygon()):
             dist -= 5
             if dist <= 5:
                 obj.setAngle(human.angle + 180)
                 a = math.pi * human.angle / 180.
                 dist = float(QtCore.qrand() % 300 + 50)
             obj = None
     return obj
Esempio n. 3
0
    def generateFromData(self, raw_data):
        data = json.loads(raw_data)
        idMap = dict()
        self.clear()

        self.ds_identifier = int(data['identifier'].split()[0])

        self.room = Room(data['room'])
        self.addItem(self.room)

        self.humans = []
        for raw_human in data['humans']:
            human = Human.from_json(raw_human)
            self.addItem(human)
            self.humans.append(human)
            idMap[raw_human['id']] = human

        self.heads = []
        for raw_head in data['heads']:
            head = Head.from_json(raw_head)
            self.addItem(head)
            self.heads.append(head)
            idMap[raw_head['id']] = head

        self.objects = []
        for raw_object in data['objects']:
            obj = RegularObject.from_json(raw_object)
            self.addItem(obj)
            self.objects.append(obj)
            idMap[raw_object['id']] = obj

        self.interactions = []
        interactions_done = []
        for interaction_raw in data['links']:
            if not [
                    interaction_raw[1], interaction_raw[0], interaction_raw[2]
            ] in interactions_done:
                interactions_done.append(interaction_raw)
                human = idMap[interaction_raw[0]]
                other = idMap[interaction_raw[1]]
                interaction = Interaction(human, other)
                self.interactions.append(interaction)
                self.addItem(interaction)

        #self.irregularobjects = []
        #for raw_irregularobjects in data['irregularobjects']:
        #obj = IrregularObject.from_json(raw_irregularobjects)
        #self.addItem(obj)
        #self.irregularobjects.append(obj)
        #idMap[raw_irregularobjects['id']] = obj

        self.robot = Robot()
        self.robot.setPos(0, 0)
        self.addItem(self.robot)