#! /usr/bin/python

# Beispiellösung      Balla

from grafik import *
import math

class Ball(TKreis):
   def __init__(self, Welt):    # Übergabewert Welt ist unveränderlich
      TKreis.__init__(self)
      self.w=Welt
      self.m=1  # g		# Modelleigenschaft
      self.d=1			# Modellgröße: funktionale Abhängigkeit zu r !
      self.vx=0 		# intern    cm/s
      self.vy=0 		# intern

   def setMasse(self,m):
      """
      /* setzt die Masse des Balls
      """
      self.m=m

   def setDurchmesser(self,d):
      """
      /* setzt den Durchmesser (und muß wegen der Abhängigkeit r korrigieren)
      """
      self.d=d
      self.setRadius(self.d/2)

   def bewegen(self):
      """
      /* bewegt Objekt (delta t=1), prüft Randbedingung und führt ggf. 
      /* Reflektion aus
      """
      TKreis.loeschen(self)
      if TKreis.getXPos(self) > self.w.get_Breite()-self.d:
          self.vx=-self.vx
      if TKreis.getXPos(self) < 0:
          self.vx=-self.vx
      if TKreis.getYPos(self) > self.w.get_Hoehe()-self.d:
          self.vy=-self.vy
      if TKreis.getYPos(self) < 0:
          self.vy=-self.vy
      TKreis.pos_versetzen_um(self,self.vx,self.vy) # physikalisch: *dt (=1)
      TKreis.zeigen(self)

   def gibImpuls(self,alpha): 
      """
      /* definiert den Impuls des Balles. Der Betrag des Impulses ist
      /* immer gleich (1), die Richtung kann mit alpha vorgegeben werden.
      /* Die x- und y- Komponenten werden berechnet
      """
      self.vx=math.cos(alpha)/self.m
      self.vy=math.sin(alpha)/self.m


if __name__=="__main__":
   mein_Bild=TZeichenblatt()
   mein_Bild.Init("schloss.gif")

   mein_Ball=Ball(mein_Bild)
   mein_Ball.setMPos(10,10)
   mein_Ball.setFarbe("rot")
   mein_Ball.setFuellfarbe("gelb")
   mein_Ball.setDurchmesser(16)
   mein_Ball.setMasse(3)
   mein_Ball.gibImpuls(0.6)

   while 1:
      mein_Ball.bewegen()
      mein_Bild.refresh()
   Tkinter.mainloop()

