[Python-de] Dreieck zeichnen so einfach wie möglich

Peter Otten __peter__ at web.de
So Apr 7 21:50:01 CEST 2013


Benedikt Schwarz wrote:

> Am 07.04.2013 17:20, schrieb Peter Otten:
>> Benedikt Schwarz wrote:
>>
>>> wie zeichnet man in Python am einfachsten ein Dreieck?
>>
>> Man spezifiziert die drei Eckpunkte und zeichnet dann Strecken zwischen
>> allen Punkt-Kombinationen.
> 
> Aber so eine richtige Funktion zum Dreieckzeichnen gibt es anscheinend
> nicht?

Canvas.create_polygon() kann beliebige Vielecke zeichnen. Hier zum Beispiel 
ein Dreieck:

import Tkinter as tk

WIDTH = 600
HEIGHT = 300

root = tk.Tk()

canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT)
canvas.pack()

canvas.create_polygon(
    (0, HEIGHT),
    (500, HEIGHT),
    (400, HEIGHT-200))

root.mainloop()

>> Außerdem musst du auch noch irgendwie die Position des Dreiecks auf der
>> Zeichenfläche (Canvas in Tkinter) festlegen.
> 
> Längste Seite = Grundlinie. Kann man das so einfach festlegen?

Ich versteh die Frage nicht. Wenn du das Dreieck nicht durch die Koordinaten 
der Ecken definieren willst, musst du dich mit der Mathematik dahinter 
beschäftigen. Mehr als sin, cos und Pythagoras brauchts dafür aber wohl 
nicht. Zum Beispiel:

from math import sin, cos, radians, sqrt

def draw_triangle(a, b, alpha, color="blue"):
    alpha = radians(alpha)
    p = b*cos(alpha)
    h = b*sin(alpha)
    q = sqrt(a*a-h*h)

    A = (0, HEIGHT)
    B = (p+q, HEIGHT)
    C = (p, HEIGHT-h)

    canvas.create_polygon(A, B, C, fill=color)

draw_triangle(500, 300, 45, "red")




Mehr Informationen über die Mailingliste python-de