Esempio n. 1
0
    r1 = RotationEvent(1, 1, 1)
    r2 = RotationEvent(2, 2, 3)
    r3 = RotationEvent(3, 1, 4)
    r4 = RotationEvent(4, 1, 5)
    r5 = RotationEvent(5, -2, 3)

    r6 = RotationEvent(1, 1, 1)
    r7 = RotationEvent(2, -1, 0)
    r8 = RotationEvent(3, 2, 2)
    r9 = RotationEvent(4, 4, 6)
    r10 = RotationEvent(5, -2, 3)

    m1 = Motion()
    m2 = Motion()

    m1.addEvent(r1)
    m1.addEvent(r2)
    m1.addEvent(r3)
    m1.addEvent(r4)
    m1.addEvent(r5)

    m2.addEvent(r6)
    m2.addEvent(r7)
    m2.addEvent(r8)
    m2.addEvent(r9)
    m2.addEvent(r10)

    c = Calculator()
    print(c.getMotionDifference(m1, m2))
Esempio n. 2
0
    def transformMotion(self, signals):
        self.signals = signals
        interpolator = Interpolator()
        n = 64

        startTime = None
        endTime = None

        for event in self.signals:
            if startTime == None:
                startTime = event.getTime()
            elif startTime > event.getTime():
                startTime = event.getTime()

            if endTime == None:
                endTime = event.getTime()
            elif endTime < event.getTime():
                endTime = event.getTime()

            if isinstance(event, RotationEvent):
                self.recordedRotations.append(event)
            elif isinstance(event, ButtonEvent):
                self.recordedButtons.append(event)
            elif isinstance(event, TouchEvent):
                #self.recordedTouches.append(event)

                if event.getLocation is None:
                    raise NameError('Hier ist ein Fehler aufgetreten')

                #Sort Touches by Locations
                if event.getLocation() not in self.touches:
                    self.touches[event.getLocation()] = []

                self.touches[event.getLocation()].append(event)

            else:
                pass

        if startTime is None or endTime is None:
            raise NotEnoughSignals()

        #Construct Motion
        transformedMotion = Motion()
        transformedMotion.setStartTime(startTime)
        transformedMotion.setEndTime(endTime)

        self.addNeutralValues(startTime, endTime)

        #print('ROTATIONS')
        #print(self.recordedRotations)
        #print('BUTTONS')
        #print(self.recordedButtons)
        #print('TOUCHES ARRAY')
        #print(self.recordedTouches)
        #print('TOUCHES DIC')
        #print(self.touches)
        #return

        #Rotation Part of Motion
        if len(self.recordedRotations) > 0:
            result = interpolator.linearInterpolation(self.recordedRotations,
                                                      n)

            transformedTime = result[0]
            transformedSum = result[1]

            for i in range(len(transformedTime)):
                event = RotationEvent(transformedTime[i], None,
                                      transformedSum[i])
                transformedMotion.addEvent(event)
        else:
            print('Es wurde keine Rotation hinzugefügt')

        #Button Part of Motion
        if len(self.recordedButtons) > 0:
            result = interpolator.linearInterpolation(self.recordedButtons, n)

            transformedTime = result[0]
            transformedValue = result[1]

            for i in range(len(transformedTime)):
                event = ButtonEvent(transformedTime[i], transformedValue[i])
                transformedMotion.addEvent(event)
        else:
            print('Es wurde kein Button hinzugefügt')

        #Touch Part of Motion
        for location in self.touches:
            touchEvents = self.touches[location]
            result = interpolator.linearInterpolation(touchEvents, n)

            transformedTime = result[0]
            transformedValue = result[1]

            for i in range(len(transformedTime)):
                event = TouchEvent(transformedTime[i], location,
                                   transformedValue[i])
                transformedMotion.addEvent(event)

        #Scaling and adjustment
        self.scaleMotion(transformedMotion)
        self.adjustValues(transformedMotion)

        return transformedMotion
Esempio n. 3
0
    def transformMotion(self, signals):
        self.signals = signals
        interpolator = Interpolator()
        n = 64

        startTime = None
        endTime = None

        for event in self.signals:
            if startTime == None:
                startTime = event.getTime()
            elif startTime > event.getTime():
                startTime = event.getTime()

            if endTime == None:
                endTime = event.getTime()
            elif endTime < event.getTime():
                endTime = event.getTime()

            if isinstance(event, RotationEvent):
                self.recordedRotations.append(event)
            elif isinstance(event, ButtonEvent):
                self.recordedButtons.append(event)
            elif isinstance(event, TouchEvent):
                self.recordedTouches.append(event)
            else:
                pass

        if startTime is None or endTime is None:
            raise NotEnoughSignals()

        #Construct Motion
        transformedMotion = Motion()
        transformedMotion.setStartTime(startTime)
        transformedMotion.setEndTime(endTime)

        self.addNeutralValues(startTime, endTime)

        #Rotation Part of Motion
        result = interpolator.linearInterpolation(self.recordedRotations, n)

        transformedTime = result[0]
        transformedSum = result[1]

        for i in range(len(transformedTime)):
            event = RotationEvent(transformedTime[i], None, transformedSum[i])
            transformedMotion.addEvent(event)

        #Button Part of Motion
        result = interpolator.linearInterpolation(self.recordedButtons, n)

        transformedTime = result[0]
        transformedValue = result[1]

        for i in range(len(transformedTime)):
            event = ButtonEvent(transformedTime[i], transformedValue[i])
            transformedMotion.addEvent(event)

        #Touch Part of Motion
        touchEventDictionary = self.sortTouches()
        for touchLocation in touchEventDictionary:
            result = interpolator.linearInterpolation(touchLocation[1], n)

            transformedTime = result[0]
            transformedValue = result[1]

            for i in range(len(transformedTime)):
                event = TouchEvent(transformedTime[i], touchLocation[0],
                                   transformedValue[i])
                transformedMotion.addEvent(event)

        #Scaling and adjustment
        self.scaleMotion(transformedMotion)
        self.adjustValues(transformedMotion)

        return transformedMotion
Esempio n. 4
0
    def getMotion(self, path):
        deviceManager = DeviceManager()
        f = open(path, 'r')

        motion = Motion()

        for line in f:
            if line[:len("Name")] == "Name":
                motion.setName(line[len("Name:"):line.find(";")])
                continue
            elif line[:len("Device")] == "Device":
                deviceName = line[len("Device:"):line.find(";")]
                if deviceName == 'None':
                    continue
                device = deviceManager.getDevice(deviceName)
                motion.assignDevice(device)
                continue
            elif line[:len("Function")] == "Function":
                functionName = line[len("Function:"):line.find(";")]
                if functionName == 'None':
                    continue
                device = motion.getAssignedDevice()
                function = getattr(device, functionName)
                motion.assignFunction(function)
                continue

            time = line[line.find("Time:") + len("Time:"):line.find(";")]
            time = Decimal(time)
            line = line[line.find(";") + 1:]
            event = line[line.find("Event:") + len("Event:"):line.find(";")]
            line = line[line.find(";") + 1:]
            location = line[line.find("Location:") +
                            len("Location:"):line.find(";")]
            line = line[line.find(";") + 1:]
            if location == 'None':
                location = None
            value = line[line.find("Value:") + len("Value:"):line.find(";")]
            if value == 'None':
                value = None
            else:
                value = Decimal(value)
            line = line[line.find(";") + 1:]
            sum = line[line.find("Sum:") + len("Sum:"):line.find(";")]
            if sum == 'None':
                sum = None
            else:
                sum = Decimal(sum)
            line = line[line.find(";"):]

            if event == EVENT_BASE:
                event = BaseEvent(time)
            elif event == EVENT_ROTATE:
                event = RotationEvent(time, value, sum)
            elif event == EVENT_BUTTON:
                event = ButtonEvent(time, value)
            elif event == EVENT_TOUCH:
                event = TouchEvent(time, location, value)

            motion.addEvent(event)

        return motion