Hallo an alle!
Ich müsste von einem normalen Dreieck A B C, die drei Mittelsenkrechten und deren Schnittpunkt berechnen, sowie den Umkreis der drei Punkte einzeichnen. Dafür wiederum bräuchte ich als erstes die Mittelpunkte der Dreiecksseiten. Als nächstes müsste ich dann den Schnittpunkt berrechnen, wozu ich wiederum die Steigung brache. Die Mittelsenkrechten sollen als Grade eingezeichnet werden. Um den Umkreis zu zeichnen, muss ich zuerst den Radius r berechnen. Dieser ist gleich dem Abstand des Schnittpunktes S zu einem der drei Eckpunkte, z. B. A. Es gilt (Pythagoras) . Wennich r habe, muss ich den Kreis in ein Quadrat mit der Seitenlänge 2r einbetten, um ihn zu zeichnen.
Jetzt ist meine Frage wie ich das mit den Tkinter-Modul aufschreiben muss....
Hierbei würde ich gerne anmerken, dass ich am liebsten keine kommplette Lösung haben will, sonder nur ein paar Hinweise auf den Lösungsweg
Mfg,
Geometrie(Berechnung von Dreiecken)
Was Tkinter angeht: Deine gesamte Zeichnung besteht ja - abgesehen vom Umkreis selbst - nur aus Strecken. Auf einem Tkinter-Canvas kannst du Strecken (im Grunde sogar Polygonzüge) zeichnen (mit der create_line()-Methode), wenn du die entsprechenden Eckpunkte kennst. Einen Kreis zeichnest du mit create_oval() über die Eckpunkte des umschreibenden Quadrats. Kennst du Kreismittelpunkt und Radius, sind die einfach zu ermitteln.
Der Rest ist Mathematik. Wenn du mit Vektoren vertraut bist, ist das IMHO der einfachste Weg. Ansonsten geht es aber auch elementargeometrisch über Geradengleichungen der Form y=mx+n. Dann musst du allerdings vertikale Strecken bzw. Geraden extra behandeln.
Der Rest ist Mathematik. Wenn du mit Vektoren vertraut bist, ist das IMHO der einfachste Weg. Ansonsten geht es aber auch elementargeometrisch über Geradengleichungen der Form y=mx+n. Dann musst du allerdings vertikale Strecken bzw. Geraden extra behandeln.
Am besten ist es (immer!), wenn du die original Fehlermeldung und den zugehörigen Code(ausschnitt) zeigst.CoB hat geschrieben:Hmmm ein weiteres Prob: Wenn ich das Programm starten will kommt da, dass es kein Modul names Tkinter gibt.... Wie/wo muss ich das installieren?
Eine mögliche Fehlerquelle hier: Du verwendest Python 2.x und hast Tkinter statt tkinter geschrieben ...
Hmmmm wieso wird wenn ich f5 drücke, nicht das Fenster geöffnet? Es passiert einfach garnichts -.-
Hier in der Konsole:
Code: Alles auswählen
from tkinter import *
blatthoehe=input("blatthoehe")
blattbreite=input("blattbreite")
blatt = Canvas(width=blattbreite,height=blatthoehe,bg='white')
blatt.pack()
x1=input("erste X-Koordinate")
x2=input("zweite X-Koordinate")
y1=input("erste Y-Koordinate")
y2=input("zweite Y-Koordinate")
z1=input("erste Z-Koordinate")
z2=input("zweite Z-Koordinate")
def Dreieck():
blatt.create_line(x1,x2,y1,y2)
blatt.create_line(x1,x2,z1,z2)
blatt.create_line(z1,z2,y1,y2)
Dreieck()
Code: Alles auswählen
blatthoehe500
blattbreite500
erste X-Koordinate312
zweite X-Koordinate421
erste Y-Koordinate134
zweite Y-Koordinate135
erste Z-Koordinate193
zweite Z-Koordinate376
Du wirst es schwer haben, ein Tkinter-Programm zu schreiben, ohne mit den Grundlagen(!) von Tkinter vertraut zu sein.
http://infohost.nmt.edu/tcc/help/pubs/tkinter/
http://effbot.org/tkinterbook/tkinter-index.htm
http://infohost.nmt.edu/tcc/help/pubs/tkinter/
http://effbot.org/tkinterbook/tkinter-index.htm
Wenn du es hinbekämst, würde dein Programm laufen ...CoB hat geschrieben:das soltle ich eig hinbekommen, das Problem is halt, es öffnet sich garkein Fenster, wie es im normalfall sein sollte?!?
Der gezeigte Code ist so überhaupt nicht lauffähig, und wenn du das nicht auf den ersten Blick selbst feststellen kannst, dann fehlen dir die Tkinter-Grundlagen.
Brauchte neulich mal'n Dreieck:
War jetzt für 2.4; hab' Tkinter in tkinter umbenannt, Tkconstants in tkconstants. Bei letzterem bin ich bzgl. 3.x nicht sicher.
Ach so, der "bindFunc()"-Kram ist (persönlich) veraltet (objektiv schon immer (lambda)); hatte aber keinen Bock, das zu ändern.
However
P.S: Ist der Code nur bei mir so übergroß?
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-
import math
import tkinter
from tkconstants import *
# Screen resolution:
RESX = 640
RESY = 480
class TkWindow:
def __init__(self):
self.mw = tkinter.Tk()
self.mw.option_add("*font", ("Arial", 12, "normal"))
self.mw.title("Triangle")
self.mw.geometry("+175+90")
self.cv = tkinter.Canvas(self.mw,
bg = "white",
width = RESX,
height = RESY)
self.cv.pack()
self.drawTriangle()
self.btn = tkinter.Button(self.mw,
text = "Ok",
command = self.mw.destroy)
self.btn.bind(sequence = "<Return>", func = self.bindFunc)
self.btn.focus()
self.btn.pack(side = RIGHT,
padx = 10,
pady = 10)
self.mw.mainloop()
def bindFunc(self, a):
self.mw.destroy()
def drawTriangle(self):
w = 160
a = (240, 320)
b = (a[0] + w / 2, a[1] - math.floor(w / 2 / math.cos(math.radians(45))))
c = (a[0] + w, a[1])
self.cv.create_line(a, c)
self.cv.create_line(a, b)
self.cv.create_line(b, c)
if __name__ == "__main__":
app = TkWindow()
Ach so, der "bindFunc()"-Kram ist (persönlich) veraltet (objektiv schon immer (lambda)); hatte aber keinen Bock, das zu ändern.
However
P.S: Ist der Code nur bei mir so übergroß?