Exemplo n.º 1
0
 def __init__(self, name="Manager", dt=10e-3, **kwargs):
     """Create a manager using a context, this methods it to be overloaded."""
     self.context = Context(name=name, **kwargs)
     self.count = self.context.count
     self.pause = False
     self.dt = dt
     # Typing stuff
     self.typing = False
     self.alphabet = "abcdefghijklmnopqrstuvwxyz"
     self.caps_numbers = ")!@#$%^&*("
     self.numbers = "0123456789"
     self.typing = False
     self.shiftlock = False
     self.capslock = False
     self.altlock = False
Exemplo n.º 2
0
class SimpleManager:
    """Manage a program using the context by many having functions that can be
    overloaded to make simple and fast programs.
    This process allow the user to think directly about what the program does,
    instead of focusing on how to display things.
    The way it works is by making the main class of the program inheriting from
    this one."""
    def __init__(self, name="SimpleManager", **kwargs):
        """Create a context manager with the optional name."""
        self.context = Context(name=name, **kwargs)
        self.pause = False

    def __call__(self):
        """Call the main loop."""
        while self.context.open:
            self.events()
            if not self.pause:
                self.update()
            self.show()

    def events(self):
        """Deal with all the events."""
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.context.open = False
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    self.context.open = False
                if event.key == K_SPACE:
                    self.pause = not (self.pause)
                if event.key == K_f:
                    self.context.switch()  # Set or reverse fullscreen
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 4:
                    self.context.draw.plane.zoom([1.1, 1.1])
                if event.button == 5:
                    self.context.draw.plane.zoom([0.9, 0.9])

    def update(self):
        """Update the context manager."""

    def show(self):
        """Show the context manager."""
        self.context.refresh()
        self.context.control()
        self.context.flip()
Exemplo n.º 3
0
            mv = self.velocity
            v = Vector.createFromPolar(mv.norm, angle)
            v.color = mv.color
            v.show(context, point)
        if len(self) >= 3:
            angle += math.pi / 2
            ma = self.acceleration
            a = Vector.createFromPolar(ma.norm, angle)
            a.color = ma.color
            a.show(context, point)


if __name__ == "__main__":
    from mycontext import Context

    context = Context(name="Motion Demonstration")
    motion1 = Motion.random()
    motion2 = Motion.random()
    motion = motion1 + motion2
    motion = Motion.sum([Motion.random() for i in range(9)] +
                        [motion])  # Summing 10 motions together
    moment = Moment.random()
    print(motion, moment)
    while context.open:
        context.check()
        context.control()
        context.clear()
        context.show()
        motion.show(context)
        moment.show(context)
        context.flip()
Exemplo n.º 4
0
        for i in range(len(self.bodies)):
            self.context.draw.window.print("body: " + str(self.bodies[i]),
                                           (x, y))
            y += 30

    def getFocus(self):
        """Return the body being focused."""
        if self.focus_index is not None:
            return self.bodies[self.focus_index]
        else:
            return None

    def setFocus(self, body):
        """Set the focus using a body."""
        if body is not None:
            if not (body in self.bodies):
                self.bodies.append(body)
            self.focus_index = self.bodies.index(body)
        else:
            self.focus_index = None

    focus = property(getFocus, setFocus)


if __name__ == "__main__":
    from mycontext import Context

    context = Context(fullscreen=True)
    builder = Builder(context)
    builder()
Exemplo n.º 5
0
    def show(self):
        """Show a circle."""
        super().show()
        self.circle.show(self.context)

    @on.press(pygame.KEYDOWN, pygame.K_LEFT)
    def left(self):
        """Go left when left key is pressed."""
        self.circle.x -= 1

    @on.press(pygame.KEYDOWN, pygame.K_RIGHT)
    def right(self):
        """Go right when right key is pressed."""
        self.circle.x += 1

    @on.press(pygame.KEYDOWN, pygame.K_SPACE)
    def color_circle(self):
        """Print the position in the console."""
        self.circle.area_color = mycolors.reverse(self.circle.area_color)

    @on.press(pygame.KEYDOWN, pygame.K_ESCAPE)
    def escape(self):
        """Escape the game."""
        self.quit()


if __name__ == "__main__":
    context = Context(name='Test Controller')
    game = Game(context)
    game()
Exemplo n.º 6
0
        size = random.uniform(0, size_born)
        return cls(x, y, size, **kwargs)

    def __init__(self, x, y, size, **kwargs):
        super().__init__(x, y, size, size, **kwargs)

    def __str__(self):
        return type(self).__name__ + "(x=" + str(self.x) + ",y=" + str(
            self.y) + ",s=" + str(self.size[0]) + ")"


if __name__ == "__main__":
    from mycontext import Context
    from myabstract import Point

    context = Context(name="Rectangle Test")
    p = Point.random(radius=0.5)
    r1 = Rectangle(0,
                   0,
                   3,
                   2,
                   side_width=3,
                   side_color=mycolors.BLUE,
                   area_color=mycolors.WHITE,
                   area_show=True)
    r2 = Square(-1,
                -1,
                2,
                side_width=3,
                side_color=mycolors.BLUE,
                area_color=mycolors.WHITE,
Exemplo n.º 7
0
    def getCorners(self):
        return self.context.corners

    def getWidth(self):
        return self.size[0]

    def getHeight(self):
        return self.size[1]

    #Properties
    corners = property(getCorners)
    height = property(getHeight)
    width = property(getWidth)


if __name__ == "__main__":
    context_size = [800, 600]
    mandelbrot_size = [200, 150]
    corners = [-2, -1, 1, 1]
    context = Context.createFromSizeAndCorners(
        context_size, corners, name="Mandelbrot")  #width,height=context.size

    print(context.corners)
    print(context.position)
    print([0, 0] in context)
    #width=800;height=600;maxiter=20
    #matrix=getMatrix(width,height,maxiter=maxiter)
    #showMatrixWithPIL(matrix,width,height,maxiter=maxiter)
    m = Mandelbrot(context, mandelbrot_size)
    m()
#Show interpolations being made while moving the points.

#Impors
from mycontext import Context
from myabstract import Point
from myinterpolation import PolynomialInterpolation

context = Context()
l = 10
points = [Point(2 * x, random.randint(-5, 5)) for x in range(l)]
n = 0
ncp = 50  #number construction points

while context.open:
    context.check()
    context.control()
    context.clear()
    context.show()

    Point.turnPoints([1 / 1000 for i in range(l)], points)
    p = PolynomialInterpolation(points)
    p.show(context)
    n = (n + 1) % (ncp + 1)

    p1 = b(n / ncp)
    p2 = t(n / ncp)

    #l1=Line.createFromTwoPoints(p1,p2)

    p1.show(context, color=mycolors.YELLOW, radius=0.1, fill=True)
    p2.show(context, color=mycolors.YELLOW, radius=0.1, fill=True)
Exemplo n.º 9
0
    filename = "FourierObjects/Path"
    imagename = tm

    try:
        path = pickle.load(open(filename, 'rb'))['path']
        raise None
    except:
        to = time.time()
        # Sample the picture into an ordered list of points.
        image = cv2.imread(imagename)
        canny = cv2.Canny(image, 50, 150)
        pts = searchPoints(canny)
        pts = cleanPoints(pts)
        pts = sampleOnceEveryN(pts, n=10)
        path = getPath(pts)
        path = interpolate(path)
        print(time.time() - to)
        path = getAllToPlane(path, image.shape)
        pickle.dump({'path': path}, open(filename, 'wb'))

    # Use this ordered list of points to make the fourier transform.
    context = Context(name="Application of the Fourier Transform.",
                      fullscreen=False)
    fourier = VisualFourier(context, image=imagename)
    # fourier.load()
    fourier.drawing = path
    fourier.updateSample()
    fourier()
    fourier.save()
Exemplo n.º 10
0

class Circuit:
    def __init__(self, logic_gates=[]):
        """Create a circuit object."""
        self.logic_gates = logic_gates
        self.connexions = []

    def show(self, surface):
        """Show the circuit by showing all its logic gates."""
        for gate in self.logic_gates:
            gate.show(surface)


if __name__ == "__main__":
    from mycontext import Context

    context = Context(name="Logic Gates")
    g1 = OrGate([1, 1])
    g2 = AndGate([2, 1])
    gs = [g1, g2]
    c = Circuit(gs)

    while context.open:
        context.check()
        context.control()
        context.clear()
        context.show()
        c.show(context)
        context.flip()
Exemplo n.º 11
0
        """Draw the vectors from the points."""
        for i in range(len(points) - 1):
            v = Vector.createFromTwoTuples(points[i],
                                           points[i + 1],
                                           color=color)
            v.showFromTuple(context, points[i])

    def drawCircles(context, color, points):
        """Draw the circles from the points."""
        for i in range(len(points) - 1):
            radius = distance(points[i], points[i + 1])
            c = Circle.createFromPointAndRadius(points[i], radius, color=color)
            c.show(context)

    trace = []
    context = Context(fullscreen=False)
    n = 0
    mn = 1000
    while context.open:
        context.check()
        context.control()
        context.clear()
        context.show()

        #Update the variables
        n = (n + 1) % mn
        t = n / mn
        cst = build(cfs, t)
        trace.append(cst[-1])

        #Show the graphical components
Exemplo n.º 12
0
class Manager:
    def __init__(self, name="Manager", dt=10e-3, **kwargs):
        """Create a manager using a context, this methods it to be overloaded."""
        self.context = Context(name=name, **kwargs)
        self.count = self.context.count
        self.pause = False
        self.dt = dt
        # Typing stuff
        self.typing = False
        self.alphabet = "abcdefghijklmnopqrstuvwxyz"
        self.caps_numbers = ")!@#$%^&*("
        self.numbers = "0123456789"
        self.typing = False
        self.shiftlock = False
        self.capslock = False
        self.altlock = False

    def __str__(self):
        """Return the string representation of the manager."""
        return type(self).__name__ + "(\n{}\n)".format("\n".join(
            map(lambda x: ":".join(map(str, x)), self.__dict__.items())))

    def __call__(self):
        """Call the main loop, this method is to be overloaded."""
        self.main()

    def main(self):
        """Main loop of the simple manager."""
        self.setup()  # Name choices inspired from processing
        while self.context.open:
            self.loop()

    def setup(self):
        """Code executed before the loop."""
        pass

    def loop(self):
        """Code executed during the loop."""
        self.eventsLoop()
        self.updateLoop()
        self.showLoop()

    def eventsLoop(self):
        """Deal with the events in the loop."""
        for event in pygame.event.get():
            self.react(event)

    def react(self, event):
        """React to the pygame events."""
        if event.type == QUIT:
            self.switchQuit()
        elif event.type == KEYDOWN:
            self.reactKeyDown(event.key)
        elif event.type == KEYUP:
            self.reactKeyUp(event.key)
        elif event.type == MOUSEBUTTONDOWN:
            self.reactMouseButtonDown(event.button, event.pos)
        elif event.type == MOUSEBUTTONUP:
            self.reactMouseButtonUp(event.button, event.pos)
        elif event.type == MOUSEMOTION:
            self.reactMouseMotion(event.pos)

    def switchQuit(self):
        """React to a quit event."""
        self.context.open = not (self.context.open)

    def reactKeyDown(self, key):
        """React to a keydown event."""
        self.reactAlways(key)
        if self.typing:
            self.reactTyping(key)
        else:
            self.reactMain(key)

    def reactKeyUp(self, key):
        """React to a keyup event."""
        pass

    def reactAlways(self, key):
        """React to a key whether or not the typing mode is on."""
        # print(key) for debugging the keys
        if key == K_ESCAPE:
            self.switchQuit()
        if key == K_SLASH or key == K_BACKSLASH:
            if not self.typing:
                self.context.console("Typing activated.")
            self.typing = True
        if key == K_BACKQUOTE:
            self.switchTyping()

    def reactLock(self, key):
        """React to a locking key."""
        if key == K_CAPSLOCK:
            self.capslock = not (self.capslock)
        elif key == K_LSHIFT or key == K_RSHIFT:
            self.shiftlock = True
        elif key == K_LALT or key == K_RALT:
            self.altlock = True

    def reactTyping(self, key):
        """React to a typing event."""
        self.reactLock(key)
        if self.altlock:
            self.reactAltCase(key)
        elif self.capslock or self.shiftlock:
            self.reactUpperCase(key)
        else:
            self.reactLowerCase(key)

        if key == K_SPACE:
            self.write(" ")
        elif key == 8:
            self.delete()
        if key == K_LCTRL:
            self.context.console.nextArg()
        elif key == K_UP:
            self.context.console.back()
        elif key == K_DOWN:
            self.context.console.forward()
        elif key == K_RETURN:
            self.eval()
            self.context.console.nextLine()

    def eval(self):
        """Execute a line."""
        content = self.context.console.line.content
        if content[0] == "/":
            for command in content[1:]:
                try:
                    self.context.console(str(eval(command)))
                except:
                    self.context.console("Invalid command.")
        if content[0] == "\\":
            for command in content[1:]:
                try:
                    exec(command)
                    self.context.console("Command " + command + " executed.")
                except Exception as e:
                    self.context.console(str(e))
        self.context.console.eval()

    def reactAltCase(self, key):
        """React when typing with alt key pressed."""
        if key == K_e:
            self.write("`")  # Stupid
        elif key == 167:
            self.write("´")

    def reactLowerCase(self, key):
        """React when typing in lower case."""
        d = {
            K_COMMA: ",",
            K_PERIOD: ".",
            K_SEMICOLON: ";",
            K_LEFTBRACKET: "[",
            K_RIGHTBRACKET: "]",
            39: "'",
            45: "-",
            K_EQUALS: "="
        }
        if 48 <= key <= 57:
            self.write(self.numbers[key - 48])
        elif 97 <= key <= 122:
            self.write(self.alphabet[key - 97])
        elif key in d:
            self.write(d[key])
        elif key == K_SLASH:
            if not self.context.console.line.empty:
                self.context.console.nextLine()
            self.write("/")
            self.context.console.nextArg()
        elif key == K_BACKSLASH:
            if not self.context.console.line.empty:
                self.context.console.nextLine()
            self.write("\\")
            self.context.console.nextArg()

    def reactUpperCase(self, key):
        """React to a key when typing in uppercase."""
        d = {59: ":''", 44: "<", 46: ">", 47: "?", 45: "_", 39: "\"", 61: "+"}
        if 48 <= key <= 57:
            self.write(self.caps_numbers[key - 48])
        elif 97 <= key <= 122:
            self.write(self.alphabet[key - 97].upper())
        elif key in d:
            self.write(d[key])

    def write(self, c):
        """Write some content."""
        self.context.console.lines[-1].content[-1] += c
        self.context.console.lines[-1].refresh()
        self.shiftlock = False
        self.altlock = False

    def delete(self, n=1):
        """Delete some content."""
        self.context.console.lines[-1].content[
            -1] = self.context.console.lines[-1].content[-1][:-n]
        self.context.console.lines[-1].refresh()

    def reactMain(self, key):
        """React as usual when not typing."""
        if key == K_f:
            self.switchFullscreen()
        if key == K_1:
            self.switchCapture()
        if key == K_2:
            self.switchCaptureWriting()
        if key == K_3:
            self.switchScreenWriting()
        if key == K_LALT:
            self.switchPause()

    def switchTyping(self):
        """Switch the typing mode."""
        self.typing = not (self.typing)
        if self.typing:
            self.context.console("Typing activated.")
            self.context.console.nextLine()
        else:
            self.context.console("Typing deactivated.")

    def switchScreenWriting(self):
        """Switch the screen writing mode."""
        if self.context.camera.screen_writing:
            self.context.camera.screen_writer.release()
        self.context.camera.switchScreenWriting()
        if self.context.camera.screen_writing:
            self.context.console('The screen is being written.')
        else:
            self.context.console('The screen video has been released')
            self.context.console('and is not being written anymore.')

    def switchCaptureWriting(self):
        """Switch the capture writing mode."""
        if self.context.camera.capture_writing:
            self.context.camera.capture_writer.release()
        self.context.camera.switchCaptureWriting()
        if self.context.camera.capture_writing:
            self.context.console('The capture is being written.')
        else:
            self.context.console('The capture video has been released')
            self.context.console('and is not being written anymore.')

    def switchPause(self):
        """React to a pause event."""
        self.pause = not self.pause
        if self.pause:
            self.context.console('The system is paused.')
        else:
            self.context.console('The system is unpaused.')

    def switchCapture(self):
        """React to a capture event."""
        self.context.camera.switchCapture()
        if self.context.camera.capturing:
            self.context.console('The camera capture is turned on.')
        else:
            self.context.console('The camera capture is turned off.')

    def switchFullscreen(self):
        """React to a fullscreen event."""
        self.context.switch()
        if self.context.fullscreen:
            self.context.console("The fullscreen mode is set.")
        else:
            self.context.console("The fullscreen mode is unset.")

    def reactMouseButtonDown(self, button, position):
        """React to a mouse button down event."""
        if button == 4:
            self.context.draw.plane.zoom([1.1, 1.1])
        if button == 5:
            self.context.draw.plane.zoom([0.9, 0.9])

    def reactMouseButtonUp(self, button, position):
        """React to a mouse button up event."""
        pass

    def reactMouseMotion(self, position):
        """React to a mouse motion event."""
        pass

    def updateLoop(self):
        """Update the manager while in the loop."""
        if not self.pause:
            self.update()
            self.count()
        self.context.camera.write(
        )  # Write on the camera writers if they are on

    def update(self):
        """Update the components of the manager of the loop. This method is to be
        overloaded."""
        pass

    def showLoop(self):
        """Show the graphical components and deal with the context in the loop."""
        if not self.typing:  # Ugly fix for easier pratical use
            self.context.control()
        self.context.clear()
        self.context.show()
        self.show()
        self.showCamera()
        self.context.console.show()
        self.context.flip()

    def show(self):
        """Show the graphical components on the context. This method is to be
        overloaded."""
        pass

    def showCamera(self):
        """Show the camera if active."""
        if self.context.camera.capturing:
            self.context.camera.show()

    def counter():
        doc = "The Counter property."

        def fget(self):
            """Bind the counter of the manager to the one of the context."""
            return self.context.counter

        def fset(self, counter):
            """Set the counter of the context."""
            self.context.counter = counter

        return locals()

    counter = property(**counter())
Exemplo n.º 13
0
 def __init__(self, name="SimpleManager", **kwargs):
     """Create a context manager with the optional name."""
     self.context = Context(name=name, **kwargs)
     self.pause = False
Exemplo n.º 14
0
class Manager:
    def __init__(self,title="Unnamed"):
        """Create a manager using a context, this methods it to be overloaded."""
        self.context=Context(name=title)

    def __call__(self):
        """Call the main loop, this method is to be overloaded."""
        self.main()

    def main(self):
        """Main loop of the simple manager."""
        self.setup() #Name choices inspired from processing
        while self.context.open:
            self.loop()

    def setup(self):
        """Code executed before the loop."""
        pass

    def loop(self):
        """Code executed during the loop."""
        self.eventsLoop()
        self.updateLoop()
        self.showLoop()

    def eventsLoop(self):
        """Deal with the events in the loop."""
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.reactQuit()
            if event.type == KEYDOWN:
                self.reactKeyDown(event.key)
            if event.type == pygame.MOUSEBUTTONDOWN:
                self.reactMouseButtonDown(event.button)


    def reactQuit(self,event):
        """React to a quit event."""
        self.context.open=False

    def reactKeyDown(self,key):
        """React to a keydown event."""
        if key == K_ESCAPE:
            self.context.open=False

    def reactMouseButtonDown(self,button):
        """React to a mouse button down event."""
        if button == 4: self.context.draw.plane.zoom([1.1,1.1])
        if button == 5: self.context.draw.plane.zoom([0.9,0.9])



    def updateLoop(self):
        """Update the manager while in the loop."""
        self.update()

    def update(self):
        """Update the components of the manager of the loop. This method is to be
        overloaded."""
        pass

    def showLoop(self):
        """Show the graphical components and deal with the context in the loop."""
        self.context.control()
        self.context.clear()
        self.context.show()
        self.show()
        self.context.showConsole()
        self.context.flip()

    def show(self):
        """Show the graphical components on the context. This method is to be
        overloaded."""
        pass
Exemplo n.º 15
0
        self.context = context

    def setPlayer(self, player):
        """Set the player of the expanse level."""
        self.player = player

    def main(self):
        """Main loop of the level."""
        while self.context.open:
            self.context.check()
            self.show()
            self.update()

    def update(self):
        """Update the level."""
        pass

    def show(self):
        """Show the level."""
        self.context.control()
        self.context.clear()
        self.context.show()
        self.map.show(self.context)
        self.context.flip()


if __name__ == "__main__":
    context = Context(fullscreen=True, size=[1440, 900])
    expanse = Expanse(context)
    expanse.main()
Exemplo n.º 16
0
 def __init__(self,title="Unnamed"):
     """Create a manager using a context, this methods it to be overloaded."""
     self.context=Context(name=title)
Exemplo n.º 17
0
    def update(self):
        """Update the spaceship."""
        pass

    def control(self):
        """Control the spaceship."""
        pass

    def shoot(self, vector):
        """Return a missile that follow the vector."""
        motion = self.getMotion()
        return Missile(motion)


class Missile(MaterialForm):
    def __init__(self, motion):
        """Create a missile."""
        super().__init__(*args, **kwargs)


class Player:
    def __init__(self):
        """Create a player."""


if __name__ == "__main__":
    from mycontext import Context
    context = Context()
    game = Game(context)
Exemplo n.º 18
0
    def showBar(self, context, t, l):
        """Show the bar."""
        v = self.getVector()
        v *= l
        p = self(t)
        v.rotate(math.pi / 2)
        p1 = v(p)
        v.rotate(math.pi)
        p2 = v(p)
        s = Segment(p1, p2)
        s.color = self.color
        s.show(context)


if __name__ == "__main__":
    from mycontext import Context

    surface = Context()
    o = Point.origin()
    s = Step.random()
    print(s)
    while surface.open:
        surface.check()
        surface.control()
        surface.clear()
        surface.show()
        s.rotate(0.001, o)
        o.show(surface)
        s.show(surface)
        surface.flip()
Exemplo n.º 19
0
from myabstract import Form,Point
from mybody import Body
from mycontext import Context

import copy
import mycolors

ps=[Point(10,2),Point(12,5),Point(15,-2)]
f=Form(ps)
b=Body.createFromAbsolute(f)

context=Context()
while context.open:
    context.check()
    context.control()
    context.clear()
    context.show()

    p=Point(*context.point())

    nb=copy.deepcopy(b)
    nba=copy.deepcopy(nb.absolute)
    nba.points.append(p)
    for point in nba.points:
        point.show(context,color=mycolors.BLUE)
    nb.absolute=nba

    nb.show(context)
    nb.absolute.center.show(context,color=mycolors.RED)

    context.flip()
Exemplo n.º 20
0
                self.intruding_points[i],
                self.points[i + 1],
            ]
            b = BezierCurve(bezier_points)
            bezier_curves.append(b)


if __name__ == "__main__":
    # To show the points
    from mycontext import Context
    import colors

    # To create the points
    import random

    context = Context(name="Interpolation Demonstration")

    # Parameters
    h = 1
    w = 1
    xmin, xmax, ymin, ymax = [-w, w, -h, h]  # corners
    l = 5  # number of points
    n = 0  # number of steps
    m = 100  # max number of steps

    # Final version
    # pts=[Point.random() for i in range(10)]
    pts = [Point(2 * x, random.randint(-5, 5)) for x in range(l)]
    interpolation = PolynomialInterpolation([p.components for p in pts])
    interpolation.color
    npts = interpolation.sample(200)
Exemplo n.º 21
0
        new_rays=[]
        for ray in self.entity.getRays():
            for form in self.forms:
                new_rays.append(ray.crossForm(form))
                break
        return new_rays



if __name__=="__main__":
    from myzone import Zone
    from mycontext import Context
    s=20
    size=[s,s]
    zone=Zone([2*s,2*s])
    context=Context(name="Maze",fullscreen=True)
    matrix=np.array(Maze.conversion(Maze.convert(Maze.eller(Maze.make_empty_grid(*size))),['X',' '],[1,0]))
    maze=Maze(matrix,fill=True)
    entity=BasicEntity(1,1,color=mycolors.RED,vector_color=mycolors.GREEN,vector_width=3)
    solver=Solver(maze,entity)
    n=0
    while context.open:
        context.check()
        context.control()
        context.clear()
        context.show()
        n=(n+1)%1
        if n==0:
            solver.update()
        solver.show(context)
        context.flip()
Exemplo n.º 22
0
    o = Point.origin()

    random_force = Force.random()
    # print(random_force)
    random_force += gravity
    # print(random_force)

    result = Force.sum([gravity, propulsion, random_force])
    # print("Force.sum:",result)

    x, y = result
    # print(x,y) #Unpacking is compatible for vectors

    f = gravity
    print(result)

    from mycontext import Context

    context = Context()
    position = (0, 0)
    while context.open:
        context.check()
        context.control()
        context.clear()
        context.show()
        position = context.point()
        f.components = list(position)
        f.show(context, o)
        context.flip()
        # context.wait(0.1)
Exemplo n.º 23
0
            point.show(self.context)

    def showGraphs(self, graphs):
        """Show the graphs on the screen."""
        for (i, graph) in enumerate(graphs):
            color = self.colors[i]
            print(color)
            self.showGraph(graph, color)

    def showGraph(self, graph, color=mycolors.WHITE):
        """Show a graph on the screen."""
        self.context.draw.lines(self.context.screen,
                                color,
                                graph,
                                connected=False)


if __name__ == "__main__":
    from mycontext import Context
    from polynomial import Polynomial
    from myabstract import Point

    context = Context(name="Grapher Demonstration")
    xs, ys = [1, 2, -4, -6, 4], [1, -3, -2, 5, -2]
    ps = [Point(x, y, radius=2, conversion=False) for (x, y) in zip(xs, ys)]
    p = Polynomial.createFromInterpolation(xs, ys)
    fs = [math.sin, math.cos, math.tan, p]
    grapher = Grapher(context, fs)
    grapher.points = ps
    grapher()