import random class SimulatedDiode(ReadonlyRegisterBase): def __init__(self, name): ReadonlyRegisterBase.__init__(self, name) self.x=0.0 self.y=0.0 self.radius=0.125 self.amplitude = 600.0 self.offset=200.0 self.border = 0.025 def doRead(self): x,y = scx.position, scy.position noise = random.random() * self.amplitude/100.0 d = math.hypot(x-self.x, y-self.y) #print d if d>self.radius: return self.offset + noise elif d< (self.radius - self.border ): return self.offset + noise + self.amplitude else : return self.offset + noise + self.amplitude *(self.radius - d)/self.border def set_center(self, x, y): self.x, self.y = x, y