Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

protokolle:10.01.19

10.01.19

  • Fertigstellung des Raumes
# -*- coding: utf-8 -*-
from __future__ import division
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.graphics import Line
width = None
height = None
Raum = None
class RaumWidget(Widget):
    
    def eingabeZuPixel(self):
        self.door_width = 1.5
        self.offset = [20,20]
        prop_window = (Window.size[0]-40)/(Window.size[1]-40) #width/height
        prop_modell = self.width/self.height
        if prop_window>prop_modell:
            self.skalierung = (Window.size[1]-40)/self.height
            self.offset[0] = (Window.size[0]-self.skalierung*self.width)/2
        else:
            self.skalierung = (Window.size[0]-40)/self.width
            self.offset[1] = (Window.size[1]-self.skalierung*self.height)/2
        self.height *= self.skalierung
        self.width *= self.skalierung
        self.door_width *= self.skalierung

    def raumZeichnen(self,width,height):
        self.width = width
        self.height = height
        self.eingabeZuPixel()
        door_R = [self.offset[0]+self.width/2+self.door_width/2,self.offset[1]]
        corner_BR = [self.offset[0]+self.width,self.offset[1]]
        corner_TR = [corner_BR[0],self.offset[1]+self.height]
        corner_TL = [self.offset[0],corner_TR[1]]
        corner_BL = self.offset
        door_L = [door_R[0]-self.door_width,self.offset[1]]
        koordinaten = [door_R,corner_BR,corner_TR,corner_TL,corner_BL,door_L]
        self.posDoor = [self.offset[0]+self.width/2,self.offset[1]]
        with self.canvas:
            self.canvas.clear()
            Line(points=koordinaten)
    
    def resizeRaum(self,parent,w, h):
        self.raumZeichnen(width,height)


class RaumApp(App):
    def build(self):
        self.parent = Widget()
        self.painter = RaumWidget()
        self.painter.raumZeichnen(width,height)
        Window.bind(on_resize=self.painter.resizeRaum)
        self.parent.add_widget(self.painter)
        return self.parent


if __name__ == '__main__':
    global width
    global height
    global Raum
    width = int(raw_input("Breite:  "))
    height = int(raw_input("Hoehe:  "))
    Raum = RaumApp()
    Raum.run()

def getPosDoor():
    global Raum
    return Raum.painter.posDoor
  • Änderung von move_it sodass die Punkte nicht mehr auf 0/0 sondern auf die Tür zulaufen
class Mover(object):
    

    def __init__(self, circles):
		posDoor = getPosDoor()
        self.circles = circles
        self.v = 5
        while True:
            time.sleep(0.1)
            for circ in self.circles:
                richtung = np.array((posDoor[0]-circ.pos[0], posDoor[1]-circ.pos[1]))
                richtung = 1/np.linalg.norm(richtung) * richtung
                circ.pos = (circ.pos[0]+self.v*richtung[0],circ.pos[1]+self.v*richtung[1])
                print circ.pos
  • Versuch der Verknüpfung beider Bereiche - in Arbeit
protokolle/10.01.19.txt · Zuletzt geändert: 2019/08/28 00:08 von morningstar