Example #1
0
    def __init__(self, disp):
        super(AnimationEngine, self).__init__(disp)
        self.app = exp.Experiment(self.disp)
        self.app.engine = self
        self.rect = self.app.get_render_area()

        self.startHeight = None
        self.endHeight = None
        self.heightInterval = None
        self.currentHeight = None

        self.runStarted = True

        self.equipment = pygame.sprite.Group()

        self.ruler = MEquip.Ruler(110, 5, 380)
        self.ball = MEquip.Ball(100, 375, 20)
        self.clampStand = MEquip.ClampStand(115, 0, 400)

        self.equipment.add(self.ruler)
        self.equipment.add(self.ball)
        self.equipment.add(self.clampStand)

        self.rulerLabel = template.DiagramLabelPointToPoint(
            (325, 30), (self.ruler.rect.right, 30), False, False, "Ruler")
        self.clampLabel = template.DiagramLabelPointToPoint(
            (325, 100), (250, 100), False, False, "Clamp Stand")
Example #2
0
    def __init__(self, disp):
        super(AnimationEngine, self).__init__(disp)
        self.app = exp.Experiment(self.disp)
        self.app.engine = self
        self.rect = self.app.get_render_area()

        self.startTime = None
        self.endTime = None
        self.interval = None

        self.currentTime = 0
        self.nextRecordPoint = 0

        self.wireColour = colours.BLACK

        self.block = sEquip.CopperBlock(10, 100, 400, 300)
        self.block.insertThermometer()
        self.block.insertHeater()
        self.blockRight = self.block.x + self.block.width

        midBetweenBlockAndEdge = self.block.x + self.block.width + (
            self.rect.right - (self.block.x + self.block.width)) // 2
        batteryFactor = 1
        ammeterFactor = 40
        voltmeterFactor = 40
        self.battery = eEquip.Battery(midBetweenBlockAndEdge,
                                      self.rect.bottom - 60,
                                      int(57 * batteryFactor),
                                      int(48 * batteryFactor))
        self.ammeter = eEquip.Ammeter(self.rect.right - 30, self.rect.centery,
                                      int(ammeterFactor * 1))
        self.voltmeter = eEquip.Voltmeter(midBetweenBlockAndEdge, 100,
                                          int(voltmeterFactor * 1))

        self.equipment = pygame.sprite.Group()
        self.equipment.add(self.block.thermometer)
        self.equipment.add(self.block.heater)
        self.equipment.add(self.ammeter)
        self.equipment.add(self.voltmeter)
        self.equipment.add(self.battery)
        self.block.thermometer.setupMarker(self.disp, 20)

        self.arrowGroup = pygame.sprite.Group()

        nOfArrows = 7
        spacing = 30
        y = self.block.y
        for i in range(nOfArrows):

            if i == nOfArrows - 1:
                x = self.block.heaterBasePoint
                y += spacing
                angle = 90
            elif i % 2 == 0:
                x = self.block.heaterBasePoint - 40
                y += spacing
                angle = 0
            else:
                x = self.block.heaterBasePoint + 40
                angle = 180

            a = sEquip.HeatArrow(x, y, angle, 2)
            self.arrowGroup.add(a)

        thermometerLabel = template.DiagramLabel(
            self.block.thermometerBasePoint, self.rect.bottom - 40,
            self.block.thermometer, True, False, "Thermometer")
        heaterLabel = template.DiagramLabel(self.block.heaterBasePoint,
                                            self.rect.bottom - 30,
                                            self.block.heater, True, False,
                                            "Heater")
        blockLabel = template.DiagramLabelPointToPoint(
            (70, 30), (70, self.block.y), True, True, "1kg Metal Block")
        ammeterReading = template.DiagramLabel(midBetweenBlockAndEdge,
                                               self.ammeter.centerY,
                                               self.ammeter, False, False,
                                               "Reading: 4A")
        voltemeterReading = template.DiagramLabel(midBetweenBlockAndEdge,
                                                  self.voltmeter.centerY - 40,
                                                  self.voltmeter, True, True,
                                                  "Reading: 10V")
        self.labels = []
        self.labels.append(thermometerLabel)
        self.labels.append(heaterLabel)
        self.labels.append(blockLabel)
        self.labels.append(ammeterReading)
        self.labels.append(voltemeterReading)