Modul Dreiecke

Modul zur Berechnung von Dreiecken
Antworten
Benutzeravatar
gerhard-schrueffer
Site Admin
Beiträge: 75
Registriert: Fr Jan 26, 2018 9:25 pm

Modul Dreiecke

Beitrag von gerhard-schrueffer »

Code: Alles auswählen

#  -*- coding: utf-8 -*-
""" Geschrieben von gesc 
    Modul zur Berechnungen der Dreicke (rechtwinkliges)
    Version 0.6    Juli 2018 
    
    Die Returnparameter sind:
    sa = Seite a
    sb = Seite b
    sc = Seite c
    wa = Winkel a
    wb = Winkel b
    wy = Winkely
    ho = Hoehe
    um = Umfang
    fl = Flaeche 
    ru = Radius des Umkresies
    ri = Radius des Innenkreises
    kp = Hypotenusenabschnitt p
    kq = Hypotenusenabschnitt q
    awa = Aussenwinkel a
    awb = Aussenwinkel b
    awy = Aussenwinkel y
    raf = Radius Feuerbachkreis
    rka = Radius Ankreis a
    rkb = Radius Ankreis b
    rkc = Radius Ankreis c
    lwa = Länge Winkelhalbierende a
    lwb = lLänge Winkelhalbierende b
    lwy = Länge Winkelhalbierende y
    gra = Seitenlänge a grösstes Rechteck
    grb = Seitenlänge b grösstes Rechteck
    grf = Fläche grösstes Rechteck
    gru = Umfang grösstes Rechteck
    grp = Prozent grösstes Rechteck
    sha = Seitenhalbierende a
    shb = Seitenhalbierende b
    shc = Seitenhalbierende c 
    qra = Seitenlänge grösstes Quadrat
    qrf = Fläche grösstes Quadrat
    qru = Umfang grösstes Quadrat
    qrp = Prozent grösstes Quadrat  
    
    Der komplette Returnparameteraufruf erfolgt mit:
       
    sa, sb, sc, wa, wb, wy, ho, um, fl, ru, ri, kp, kq,
    awa, awb, awy, raf, rka, rkb, rkc, lwa, lwb, lwy, 
    gra, grb, grf, gru, grp, sha, shb, shc, qra, qrf, 
    qru, qrp = rewidreieck("a",3,"b",4,"cm",2, "p") 
    immer mit einem \ am Zeilenende wegen der Länge
    
    wobei "a" als Beispiel Seite a und "b" als Seite b
    übergeben wird. "cm" die Masse und die 2 die anzahl der 
    Stellen auf die gerundet wir (kann beliebig sein) 
    
    
    Aufruf für nur Druck der Berechnungen:
        
    print(fbr.rewidreieck("a",3,"wb", 53.13,"cm",3,"p")) 
    hier z.b: Seite a mit 3 cim und Winkel b mit 53,13 grad.
    
    Soll auch gezeichnet werden, dann nach dem Returnparameteraufruf noch:

    dreiprint(sa, sb, sc, wa, wb, wy, ho, kp, kq, lwa, lwb, lwy, sha, shb, shc, fl, um, ru)    
    """

from math  import pi, sqrt
from numpy import cos, sin, arccos, arcsin, tan
import turtle 
import sys


#  class RewiDreieck:
    
def dreieckfl(hoehe,laenge):
    """ Fläche des Dreieckes nach Höhe mal Länge durch 2
        es wivariable ist höhe, zweite ist länge
        aufruf z.B.: mit variable = dreieckfl(4,6)   """ 
    para = hoehe * laenge * 0.5
    return para

def dreieckum(hoehe,laenge,breite):
    """ Umfang des Dreieckes nach a + b + c
        es wird ein Returnparameter zurück gegeben
        erste variable = a, zweite = b, dritte = c
        aufruf z.B.: mit variable = dreieckum(4,6,8)   """ 
    para = hoehe + laenge + breite
    return para
#  Berechnung C eines rechtwinkliges Dreieck
def dreieckcber(a,b):
    para = (a **2 + b **2) **(1/2)
    return para
#  Berechnung A eines rechtwinkliges Dreieck
def dreieckaber(a,b):
    para = (a **2 / b **2) **(1/2)
    return para
#  Berechnung B eines rechtwinkliges Dreieck
def dreieckbber(a,b):
    para = (a **2 / b **2) **(1/2)
    return para
#     *****************************
#     ***************************** 
#  Seiten a und c gegeben 
def rewiac(a,c,p3):
    seitea = round(a,p3)
    seitec = round(c,p3)       
    seiteb = round(sqrt(seitec **2 - seitea **2),2)  
    return seitea, seiteb, seitec
#  Seiten a und b gegeben 
def rewiab(a,b,p3):
    seitea = round(a,p3)
    seiteb = round(b,p3)       
    seitec = round(sqrt(seitea **2 + seiteb **2),2)  
    return seitea, seiteb, seitec
#  Seiten b und a gegeben 
def rewiba(b,a,p3):
    seitea = round(a,p3)
    seiteb = round(b,p3)       
    seitec = round(sqrt(seitea **2 + seiteb **2),2)  
    return seitea, seiteb, seitec
#  Seiten b und c gegeben 
def rewibc(b,c,p3):
    seiteb = round(b,p3)
    seitec = round(c,p3)       
    seitea = round(sqrt(seitec **2 - seiteb **2),2)  
    return seitea, seiteb, seitec
#  Seiten c und a gegeben 
def rewica(c,a,p3):
    seitea = round(a,p3)
    seitec = round(c,p3)       
    seiteb = round(sqrt(seitec **2 - seitea **2),2)  
    return seitea, seiteb, seitec
#  Seiten c und a gegeben 
def rewicb(c,b,p3):
    seiteb = round(b,p3)
    seitec = round(c,p3)       
    seitea = round(sqrt(seitec **2 - seiteb **2),2)  
    return seitea, seiteb, seitec
#  Seiten a und winkel a gegeben 
def rewiawa(c,b,p3):
    seitea = round(c,p3)
    winkela = b
    zwi1 = (winkela * pi) / 180
    wia = (sin(zwi1))
    seitec = round((seitea/(wia)),p3)   
    seiteb = round(sqrt(seitec **2 - seitea **2),p3)  
    return seitea, seiteb, seitec
#  Seiten a und winkel b gegeben 
def rewiawb(c,b,p3):
    seitea = round(c,p3)
    winkelb = b
    zwi1 = (winkelb * pi) / 180
    wib = (cos(zwi1))
    seitec = round((seitea/(wib)),p3)   
    seiteb = round(sqrt(seitec **2 - seitea **2),p3)  
    return seitea, seiteb, seitec
#  Seiten b und winkel a gegeben 
def rewibwa(c,b,p3):
    seiteb = round(c,p3)
    winkela = b
    zwi1 = (winkela * pi) / 180
    wia = (cos(zwi1))
    seitec = round((seiteb/(wia)),p3)   
    seitea = round(sqrt(seitec **2 - seiteb **2),p3)  
    return seitea, seiteb, seitec
#  Seiten b und winkel b gegeben 
def rewibwb(c,b,p3):
    seiteb = round(c,p3)
    winkelb = b
    zwi1 = (winkelb * pi) / 180
    wib = (sin(zwi1))
    seitec = round((seiteb/(wib)),p3)   
    seitea = round(sqrt(seitec **2 - seiteb **2),p3)  
    return seitea, seiteb, seitec
#  Seiten c und winkel a gegeben 
def rewicwa(c,b,p3):
    seitec = round(c,p3)
    winkela = b
    zwi1 = (winkela * pi) / 180
    wia = (sin(zwi1))
    seitea = round((seitec*(wia)),p3)   
    seiteb = round(sqrt(seitec **2 - seitea **2),p3)  
    return seitea, seiteb, seitec
#  Seiten c und winkel b gegeben 
def rewicwb(c,b,p3):
    seitec = round(c,p3)
    winkelb = b
    zwi1 = (winkelb * pi) / 180
    wib = (sin(zwi1))
    seiteb = round((seitec*(wib)),p3)   
    seitea = round(sqrt(seitec **2 - seiteb **2),p3)  
    return seitea, seiteb, seitec

def rewidreieck(p1,a1,p2,a2,ein,p3,p4=False):
#  Seiten a und c gegeben      
    if (p1 == "a" and p2 == "c"):
       seitea, seiteb, seitec = rewiac(a1,a2,p3) 
#  Seiten a und b gegeben  
    if (p1 == "a" and p2 == "b"):
       seitea, seiteb, seitec = rewiab(a1,a2,p3)   
#  Seiten b und a gegeben           
    if (p1 == "b" and p2 == "a"):
       seitea, seiteb, seitec = rewiba(a1,a2,p3)   
#  Seiten b und c gegeben           
    if (p1 == "b" and p2 == "c"):
       seitea, seiteb, seitec = rewibc(a1,a2,p3) 
#  Seiten c und a gegeben  
    if (p1 == "c" and p2 == "a"):
       seitea, seiteb, seitec = rewica(a1,a2,p3) 
#  Seiten c und b gegeben         
    if (p1 == "c" and p2 == "b"):
       seitea, seiteb, seitec = rewicb(a1,a2,p3) 
#  Seiten a und winkel a gegeben  
    if (p1 == "a" and p2 == "wa"):
       seitea, seiteb, seitec = rewiawa(a1,a2,p3) 
#  Seiten a und winkel b gegeben  
    if (p1 == "a" and p2 == "wb"):
       seitea, seiteb, seitec = rewiawb(a1,a2,p3) 
#  Seiten b und winkel a gegeben  
    if (p1 == "b" and p2 == "wa"):
       seitea, seiteb, seitec = rewibwa(a1,a2,p3) 
#  Seiten b und winkel b gegeben  
    if (p1 == "b" and p2 == "wb"):
       seitea, seiteb, seitec = rewibwb(a1,a2,p3) 
#  Seiten c und winkel a gegeben  
    if (p1 == "c" and p2 == "wa"):
       seitea, seiteb, seitec = rewicwa(a1,a2,p3) 
#  Seiten c und winkel b gegeben  
    if (p1 == "c" and p2 == "wb"):
       seitea, seiteb, seitec = rewicwb(a1,a2,p3) 
                      
#  Winkelberechnungen      
    winkel = arcsin(seitea/seitec)
#      erg1 = arcsin(winkel)
    winkela = round(((winkel * 180) / pi),p3)
    winkelb = round((180 - 90 - winkela),p3)
    winkely = round(90,p3)
    allewi = round((90 + winkelb + winkela),p3)
#  Umfang, Höhe, Fläche       
    umfang = round((seitea + seitec + seiteb),p3)
    flaeche = round(((seitea * seiteb)/2),p3)
    hoehe = round(((seitea * seiteb) / seitec),p3)
#  Kreise       
    radumkreis = round(seitec/2,p3)
    radinkreis = round(((seitea * seiteb)/(seitea + seiteb + seitec)),p3)
#  Schwerpunkt       
    spxs = round(seiteb/3,p3)
    sphs=  round(hoehe/3,p3)  
#  Aussenwinkel
    awinkela = round(360-winkela,p3)
    awinkelb = round(360-winkelb,p3)
    awinkely = round(360-winkely,p3)       
#  Feuerbachpunkt
    fbp1 = round((1 - (cos(winkelb - winkely))),p3)
    fbp2 = round((1 - (cos(winkely - winkela))),p3)
    fbp3 = round((1 - (cos(winkela - winkelb))),p3)
    feuerbach = round(((fbp1 / fbp2) /fbp3),p3)
#  Feuerbachkreis oder Neun-Punkte-Kreis  oder Euklidkreis  
    radfeuerb = round((radumkreis / 2),p3)
#    Kathetensatz       
    katp = round(((seitea **2)/seitec),p3)
    katq = round(((seiteb **2)/seitec),p3)
#    Hypotenusenabschnitte      
   
#    Größtes Rechteck im Dreieck
    grorechtecka = seitec/2
    grorechteckb = hoehe/2
    flgrorecht = grorechtecka * grorechteckb
    umgrorecht = 2 * grorechtecka + 2 * grorechteckb
    flaprozvomdrei = round(((flgrorecht / flaeche) * 100), 2)  
    
#    Größtes Quadrat im Dreieck
    quad1 = round(((seitea * seiteb) / (seitea + seiteb)),2)
    quad2 = round(((hoehe * seitec) / (hoehe + seitec)),2)
    if quad1 > quad2:
       quadla = round(quad1, p3)
       quadfl = round((quad1 * quad1), p3)
       quadum = round((quad1 * 4), p3)
    if quad2 > quad1:
       quadla = round(quad2, p3)
       quadfl = round((quad2 * quad2), p3)
       quadum = round((quad2 * 4), p3) 
    flaprozvomquad = round(((quadfl / flaeche) * 100), 2) 

#    Winkelhalbierende
    waerg1 = (winkela * pi) / 180
    waerg2 = (winkelb * pi) / 180
    waerg3 = (winkely * pi) / 180
    zwi1 = cos(waerg1/2)
    zwi2 = cos(waerg2/2)
    zwi3 = cos(waerg3/2)
    laengewha = round((2 * seiteb * seitec * zwi1)/(seiteb + seitec),p3)
    laengewhb = round((2 * seitea * seitec * zwi2)/(seitea + seitec),p3)
    laengewhy = round((2 * seitea * seiteb * zwi3)/(seitea + seiteb),p3)
    
#    Seitenhalbierenden
    erg1 = (2 *(seiteb **2 + seitec **2)- seitea **2)
    erg2 = (2 *(seitea **2 + seitec **2)- seiteb **2)
    erg3 = (2 *(seiteb **2 + seitea **2)- seitec **2)
    
    seitha = round((sqrt(erg1)/2),p3)
    seithb = round((sqrt(erg2)/2),p3)
    seithc = round((sqrt(erg3)/2),p3)

#    Mittelsenkrechten

#    Ankreise
    radankreisa = round(((seitec + seitea - seiteb ) /2),p3)      
    radankreisb = round(((seitec + seiteb - seitea ) /2),p3)   
    radankreisc = round(((seitec + seiteb + seitea ) /2),p3)   

#    Returnparameter
    sa = round(seitea, p3)
    sb = round(seiteb, p3)
    sc = round(seitec, p3)
    wa = round(winkela, p3)
    wb = round(winkelb, p3)
    wy = round(winkely, p3)
    ho = round(hoehe, p3)
    um = round(umfang, p3)
    fl = round(flaeche, p3)
    ru = round(radumkreis, p3)
    ri = round(radinkreis, p3)
    kp = round(katp, p3)
    kq = round(katq, p3)
    awa = round(awinkela, p3)
    awb = round(awinkelb, p3)
    awy = round(awinkely, p3)
    raf = round(radfeuerb, p3)
    rka = round(radankreisa, p3)
    rkb = round(radankreisb, p3)
    rkc = round(radankreisc, p3)
    lwa = round(laengewha, p3)
    lwb = round(laengewhb, p3)
    lwy = round(laengewhy, p3)
    gra = round(grorechtecka, p3)
    grb = round(grorechteckb, p3)
    grf = round(flgrorecht, p3)
    gru = round(umgrorecht, p3)
    grp = round(flaprozvomdrei, p3)
    sha = round(seitha, p3)
    shb = round(seithb, p3)
    shc = round(seithc, p3)  
    qra = round(quadla, p3)
    qrf = round(quadfl, p3)
    qru = round(quadum , p3)
    qrp = round(flaprozvomquad, p3) 
              
    if p4 == "p":   
        print("die Seitenlänge a beträgt: ", seitea,  ein) 
        print("die Seitenlänge b beträgt: ", seiteb, ein) 
        print("die Seitenlänge c  beträgt: ", seitec,  ein)   
        print() 
        print("der Unfang beträgt: ", umfang, ein)
        print("die Höhe beträgt: ", hoehe, ein)
        print()     
        print("der Radius des Umkreise beträgt: ", radumkreis, ein)
        print("der Radius des Innkreis beträgt: ", radinkreis, ein)
        print()   
        print("der Radius des Ankreises a beträgt: ", radankreisa, ein)
        print("der Radius des Ankreises b beträgt: ", radankreisb, ein)
        print("der Radius des Ankreises c beträgt: ", radankreisc, ein)
        print()   
        print("die Fläche beträgt: ", flaeche, "quadrat", ein)
        print()     
        print("der Schwerpunkt XS beträgt: ", spxs,  ein)
        print("der Schwerpunkt hS beträgt: ", sphs,  ein)
        print()     
        print("die Kathete p beträgt: ", katp,  ein)
        print("die Kathete q beträgt: ", katq,  ein)
        print()           
        print("der Winkel alpha gerundet beträgt: ", winkela , "Grad")
        print("der Winkel beta gerundet beträgt: ", winkelb, "Grad")
        print("der Winkel gamma gerundet beträgt: " , winkely,  "Grad")
        print("Die Summe der Winkel gerundet beträgt: ", allewi, "Grad")
        print()
        print("der aussen Winkel alpha gerundet beträgt: ", awinkela , "Grad")
        print("der aussen Winkel beta gerundet beträgt: ", awinkelb, "Grad")
        print("der aussen Winkel gamma gerundet beträgt: " , awinkely,  "Grad") 
        print()
#         print("der Feuerbachpunkt beträgt: ?", feuerbach, ein)
#         print("Koordinate des Feuerbachpunkt beträgt: ", fbp1, ein)
#         print("Koordinate des Feuerbachpunkt beträgt: ", fbp2, ein)
#         print("Koordinate des Feuerbachpunkt beträgt: ", fbp3, ein)
        print("der Radius des Feuerbachkreises beträgt: ", radfeuerb, ein)
        print()
        print("die Länge der Winkelhalbierenden wa beträgt: ", laengewha, ein)
        print("die Länge der Winkelhalbierenden wb beträgt: ", laengewhb, ein)
        print("die Länge der Winkelhalbierenden wy beträgt: ", laengewhy, ein)
        print() 
        print("Länge a des grössten Rechtecks im Dreieck: ", grorechtecka, ein)
        print("Länge b des grössten Rechtecks im Dreieck: ", grorechteckb, ein)
        print("Fläche des grössten Rechtecks im Dreieck", flgrorecht, "quadrat", ein)
        print("Umfang des grössten Rechtecks im Dreieck", umgrorecht, ein)
        print("Prozentanteil des grössten Rechtecks im Dreieck", flaprozvomdrei, "%")
        print()
        print("die Seitenlänge grösstes Quadrat im Dreieck: ", quadla, ein) 
        print("die Fläche grösstes Quadrat im Dreieck: ", quadfl, "quadrat", ein) 
        print("der Umfang grösstes Quadrat im Dreieck: ", quadum, ein) 
        print("Prozentanteil des grössten Quadrat im Dreieck", flaprozvomquad, "%")       
        print()           
        print("die Seitenhalbierende Sa beträgt: ", seitha, ein)
        print("die Seitenhalbierende Sb beträgt: ", seithb, ein)
        print("die Seitenhalbierende Sc beträgt: ", seithc, ein) 
        print()    
        
    return sa, sb, sc, wa, wb, wy, ho, um, fl, ru, ri, kp, \
        kq, awa, awb, awy, raf, rka, rkb, rkc, lwa, lwb, \
        lwy, gra, grb, grf, gru, grp, sha, shb, shc, qra, \
        qrf, qru, qrp
 
    
#  *************************************** Dreieck gleichseitig  *********** 
#  Seite a oder b oder c gegeben 
def glseiabc(a1,p3):
    seitea = a1
    seitec = a1      
    seiteb = a1
    return seitea, seiteb, seitec      
#  Seite a oder b oder c gegeben 
def glseiflaeche(seitea,p3):
    flaeche = ((seitea **2)/4)*sqrt(3)
    return flaeche    
#  Seite a oder b oder c gegeben 
def glseiumfang(seitea,p3):
    umfang = seitea * 3
    return umfang    
#  Winkel a oder b oder c gegeben 
def glseiwiabc(a1,p3):
    winkela = 60
    winkelb = 60       
    winkely = 60
    return winkela, winkelb, winkely   
#  Hoehe berechnen 
def glseihoehe(seitea,p3):
    hoehe = round((seitea/2)*(sqrt(3)),p3)
    return hoehe   
#  Hoehe ist gegeben 
def glseihc(a1,p3):
    hoehe  = a1
    seitea = round(sqrt((4*a1**2)/3),p3)
    seitec = seitea      
    seiteb = seitea
    return seitea, seiteb, seitec    
#  Radius Umkreis berechnen 
def glseiraumkr(seitea,p3):
    radumkreis = round(((sqrt(3)/3)*seitea),p3)
    return radumkreis   
#  Radius Innenkreis berechnen 
def glseirainnen(seitea,p3):
    radinkreis = round(((sqrt(3)/6)*seitea),p3)
    return radinkreis  
#  Aussenwinkel berechnen 
def glseiausswi(winkela,p3):
    awinkela = 360 - winkela
    awinkelb = 360 - winkela
    awinkely = 360 - winkela
    return awinkela, awinkelb, awinkely  
#  Winkelhalbierende berechnen 
def glseiwinhalb(hoehe,p3):
    laengewha = hoehe
    laengewhb = hoehe
    laengewhy = hoehe
    return laengewha, laengewhb, laengewhy  
#  Winkelhalbierende berechnen 
def glseiseithalb(hoehe,p3):
    seitha = hoehe
    seithb = hoehe
    seithc = hoehe
    return seitha, seithb, seithc  

#  Gleichseitiges Dreeick
def reglseidreieck(p1,a1,ein,p3,p4=False):
#  Winkel     
    winkela, winkelb, winkely  = glseiwiabc(a1,p3)    
#  Seiten a und c gegeben      
    if (p1 == "a" or p1 == "b" or p1 == "c"):
       seitea, seiteb, seitec = glseiabc(a1,p3)      
#  Hoehe ist gegeben      
    if (p1 == "h"):
       seitea, seiteb, seitec = glseihc(a1,p3)  
#  Fläche     
    flaeche  = glseiflaeche(seitea,p3)        
#  Umfang     
    umfang  = glseiumfang(seitea,p3)        
#  Hoehe    
    hoehe  = glseihoehe(seitea,p3) 
#  Hoehe    
    radumkreis  = glseiraumkr(seitea,p3) 
#  Hoehe    
    radinkreis  = glseirainnen(seitea,p3) 
#  Aussenwinkel   
    awinkela, awinkelb, awinkely  = glseiausswi(winkela,p3) 
#  Winkelhalbierende   
    laengewha, laengewhb, laengewhy  = glseiwinhalb(hoehe,p3) 
#  Seitenhalbierende   
    seitha, seithb, seithc  = glseiseithalb(hoehe,p3) 
       
#    Returnparameter
    sa = round(seitea, p3)
    wa = round(winkela, p3)
    ho = round(hoehe, p3)
    um = round(umfang, p3)
    fl = round(flaeche, p3)
    ru = round(radumkreis, p3)
    ri = round(radinkreis, p3)  
    awa = round(awinkela, p3)   
    lwa = round(laengewha, p3)  
    sha = round(seitha, p3)
#    Ausdruck wenn p4 = P        
    if p4 == "p":   
        print("die Seitenlängen betragen je: ", sa,  ein) 
        print("die Winkel betragen je:      ", wa, ein)   
        print() 
        print("die Fläche beträgt: ", fl, "quadrat", ein)
        print("der Unfang beträgt: ", um, ein)
        print("die Höhe beträgt:   ", ho, ein)
        print()     
        print("der Radius des Umkreise beträgt: ", ru, ein)
        print("der Radius des Innkreis beträgt: ", ri, ein)
        print()   
        print("der Länge der Winkelhalbierende betragen:  ", lwa, ein)
        print("der Länge der Seitenhalbierenden betragen: ", sha, ein)
        print()
 
    return sa, wa, ho, um, fl, ru, ri, awa,  \
           lwa, sha


#  *************************************** Dreieck gleichschenklig  *********** 
#  Winkel a oder b oder c gegeben 
def glschenwiabc(a1,a2,p3):
    seitea = a1
    seiteb = a1
    seitec = a2
    hoehe = round(sqrt(((4*seitea**2)-(seitec**2))/4),p3)    
    zwi1 = arccos(seitec / (2*seitea))
    winkela = round(((zwi1 * 180)/pi) ,p3)   
    winkelb = winkela        
    winkely = 180 - winkela -winkelb
    return hoehe, seitea, seiteb, seitec, winkela, winkelb, winkely 
#  Seite a oder b oder c gegeben 
def glschwia(a1,a2,p3):
    seitea = a1
    seiteb = a1   
    zwi1 = ((a2*pi)/180)
    seitec = round((sin(zwi1/2)*(2*seitea)),p3)
    hoehe = round(sqrt(((4*seitea**2)-(seitec**2))/4),p3) 
    winkely = a2
    winkela = (180 - winkely)/2
    winkelb = winkela
    return seitea, seiteb, seitec, hoehe, winkela, winkelb, winkely           
#  Umfang berechnen
def glschwumf(seitea,seitec,p3):
    umfang = seitea + seitea + seitec
    return umfang   
#  Fläche berechnen
def glschwfla(hoehe,seitec,p3):
    flaeche = hoehe * (seitec / 2)
    return flaeche    
#  Umkreis berechnen
def glschumkr(hoehe,seitec,p3):
    radumkreis = round((((hoehe**2 * 4) + seitec**2) / (hoehe * 8)),p3)
    return radumkreis
#  Umkreis berechnen
def glschinkr(hoehe,seitea,seitec,p3):
    radinkreis = round(((hoehe * seitec) / (2 * seitea + seitec)),p3)
    return radinkreis  
#  Umkreis berechnen
def glschseit(seitea,seitec,p3):
    seitha = round((sqrt((seitea**2) + (2 * seitec**2))/2),p3)
    seithc = round((sqrt((4*seitea**2) - (seitec**2))/2),p3)
    return seitha, seithc  
 
      
 #  Gleichschenkliges Dreeick
def reglschdreieck(p1,a1,p2,a2,ein,p3,p4=False):
#  Seiten a oder b und winkel y gegeben              
    if (p1 == "a" or p1 == "b"):
        if(p2 == "wc"):
            seitea, seiteb, seitec, hoehe, winkela, winkelb, winkely  = glschwia(a1,a2,p3) 
            a1 = seitea
            a2 = seitec
# Prüfen ob Dreieck möglich    
    abbruch = 0
    ergabc = (2 * a1) - a2
    if (ergabc == 0 or ergabc < 0):
        print()
        print()
        print("Ein unmögliches Dreieck, da die Seiten a plus b kleiner oder gleich als c sind ") 
        print()
        print()
        abbruch = 1
    if(abbruch ==0):       
    #  Winkel      
        if (p1 == "a" or p1 == "b"):
            if(p2 == "c"):    
                hoehe, seitea, seiteb, seitec, winkela, winkelb, winkely   = glschenwiabc(a1,a2,p3)   
        if (p1 == "b" or p1 == "a"):    
            if(p2 == "c"):    
                hoehe, seitea, seiteb, seitec, winkela, winkelb, winkely  = glschenwiabc(a1,a2,p3)      
    #  Umfang berechnen              
        umfang = glschwumf(seitea,seitec,p3) 
    #  Fläche berechnen              
        flaeche = glschwfla(hoehe,seitec,p3) 
    #  Umkreis berechnen              
        radumkreis = glschumkr(hoehe,seitec,p3) 
    #  Innenkreis berechnen              
        radinkreis = glschinkr(hoehe,seitea,seitec,p3) 
    #  Seitenhalbierendes berechnen              
        seitha, seithc = glschseit(seitea,seitec,p3) 
    
             
    #    Returnparameter
    #     sa = round(seitea, p3)
    #     wa = round(winkela, p3)
        ho = round(hoehe, p3)
        wa = round(winkela,p3)
        wb = round(winkelb,p3)
        wy = round(winkely,p3)
        um = round(umfang, p3)
        fl = round(flaeche, p3)
        ru = round(radumkreis, p3)
        ri = round(radinkreis, p3) 
        sha = round(seitha, p3)
        shc = round(seithc, p3)
    #     awa = round(awinkela, p3)   
    #     lwa = round(laengewha, p3)  
        gold1 = round(winkela,0)
        print() 
        if(gold1 == 72):            
            print("dies ist ein goldenes Dreieck 1. Art ")
            print() 
            print() 
        if(gold1 == 36):
            print("dies ist ein goldenes Dreieck 2. Art ")  
            print() 
            print()             
    #    Ausdruck wenn p4 = P        
        if p4 == "p": 
            print("die Seite a beträgt : ", seitea,  ein) 
            print("die Seite b beträgt : ", seiteb,  ein) 
            print("die Seite c beträgt : ", seitec,  ein) 
            print() 
            print("die Höhe hc beträgt : ", ho,  ein) 
            print() 
            print("Der Winkel Alpha beträgt :  ", wa,  "Grad") 
            print("Der Winkel Beta beträgt :   ", wb,  "Grad") 
            print("Der Winkel Gamma beträgt : ", wy,  "Grad") 
            print() 
            print("der Umfang beträgt : ", um,  ein) 
            print("die Fläche beträgt : ", fl, "quadrat", ein) 
            print() 
            print("der Radius des Umkreis beträgt :      ", ru, ein) 
            print("der Radius des Innenkreises beträgt : ", ri, ein) 
            print() 
            print("die Seitenhalbierenden Sa, Sb betragen : ", sha, ein) 
            print("die Seitenhalbierende Sc beträgt :       ", shc, ein) 
            print() 
    
    
    
        return ho, wa, wb, wy, um, fl, ru, ri, sha, shc

           
# print(rewidreieck("c",5,"wb", 53.13,"cm",3,"p"))
def dreiprint(sa, sb, sc, wia, wib, wiy, ho, kp, kq, lwa, lwb, lwy, sha, shb, shc, fl, um, ru  ):
    xx = -200
    yy = -60
    multi = 100
    if sa < 50:
        sa = sa * multi
        sb = sb * multi
        sc = sc * multi
        ho = ho * multi
        kp = kp * multi
        kq = kq * multi
        lwa = lwa * multi
        lwb = lwb * multi
        lwy = lwy * multi
        sha = sha * multi
        shb = shb * multi
        shc = shc * multi
        fl = fl * multi
        um = um * multi
        ru = ru * multi
    turtle.speed('fastest')
    turtle.color('purple')
    turtle.pensize(2)
    
    # Seite a,b und c
    turtle.pu() 
    turtle.goto(xx, yy)
    turtle.down() 
    turtle.forward(sc)
    turtle.pu() 
    turtle.goto(xx, yy)
    turtle.down() 
    turtle.left(wia)       
    turtle.forward(sb)
    turtle.right(90)        
    turtle.forward(sa)
    # Seite q und p, Hypotenusenabschnitte
    turtle.pu() 
    turtle.home ()
    turtle.color('blue')
    turtle.pensize(1)
    turtle.goto(xx, yy-1)
    turtle.down() 
    turtle.forward(kq)
    turtle.color('black')
    turtle.forward(kp)
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy-15)
    turtle.forward(kq/2)
    turtle.write('q', align="center")
    turtle.pu() 
    turtle.forward(kq/2)
    turtle.forward(kp/2)
    turtle.down() 
    turtle.write('p', align="center")
    turtle.pu()
    # Höhe hc
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.color('black')
    turtle.pensize(1)
    turtle.forward(kq)
    turtle.left(90) 
    turtle.down() 
    turtle.forward(ho)
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.forward(kq)  
    turtle.left(90) 
    turtle.forward(ho/2)
    turtle.down() 
    turtle.write('hc', align="left")
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    # Seitenhalbierende a
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.left(wia) 
    turtle.forward(sb/2)
    turtle.down() 
    turtle.color('red')
    turtle.write('Sha     ', align="center")
    turtle.pensize(1)
    turtle.goto(xx + sc, yy)
    # Seitenhalbierende b
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.left(wia) 
    turtle.forward(sb)
    turtle.right(90)
    turtle.forward(sa/2)
    turtle.down() 
    turtle.color('red')
    turtle.write('Shb', align="left")
    turtle.pensize(1)
    turtle.goto(xx, yy)
    # Seitenhalbierende b
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.left(wia) 
    turtle.forward(sb)
    turtle.down() 
    turtle.color('red')
    turtle.pensize(1)
    turtle.goto(xx + sc/2, yy)
    turtle.write('Shc    ',  align="center")
    # Winkelhalbierende a
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.left(wia / 2)  
    turtle.down() 
    turtle.color('green')
    turtle.pensize(1)
    turtle.forward(lwa)
    turtle.write('Wa', align="left")
    # Winkelhalbierende b
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.forward(sc+1)
    turtle.left(180) 
    turtle.right(wib / 2) 
    turtle.down() 
    turtle.color('green')
    turtle.pensize(1)
    turtle.forward(lwb)
    turtle.write('Wb', align="center")
    # Winkelhalbierende c
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.left(wia)  
    turtle.forward(sb)
    turtle.right(90)   
    turtle.right(45)   
    turtle.down() 
    turtle.color('green')
    turtle.pensize(1)
    turtle.forward(lwy)
    turtle.write('Wc', align="right")
    # Umkreis
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    turtle.color('yellow')
    turtle.pensize(2) 
    turtle.forward(sc)
    turtle.left(90)  
    turtle.down() 
    turtle.circle(ru)
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx + sc, yy + 60)
    turtle.down() 
    turtle.color('black')
    turtle.write('Uk', align="right")
    # Turtle Home
    turtle.pu() 
    turtle.home ()
    turtle.goto(xx, yy)
    # Winkelhalbierende
    turtle.color('black')
    turtle.goto(xx + 5, -100)
    turtle.write('Winkelhalbierende  Wa =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -100)
    turtle.write(lwa, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -116)
    turtle.write('Winkelhalbierende  Wb =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -116)
    turtle.write(lwb, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -132)
    turtle.write('Winkelhalbierende  Wc =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -132)
    turtle.write(lwy, align="left", font=('Courier', 9, 'normal'))
    # Seitenhalbierende
    turtle.goto(xx + 250, -100)
    turtle.write('Seitenhalbierende Sa =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -100)
    turtle.write(sha, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -116)
    turtle.write('Seitenhalbierende Sb =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -116)
    turtle.write(shb, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -132)
    turtle.write('Seitenhalbierende Sc =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -132)
    turtle.write(shc, align="left", font=('Courier', 9, 'normal'))
    # Winkel im Dreieck
    turtle.goto(xx + 5, -164)
    turtle.write('Winkel Alpha =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -164)
    turtle.write(wia, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -180)
    turtle.write('Winkel Beta =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -180)
    turtle.write(wib, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -196)
    turtle.write('Winkel BGamma =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -196)
    turtle.write(wiy, align="left", font=('Courier', 9, 'normal'))
    # Seiten
    turtle.goto(xx + 250, -164)
    turtle.write('Seiten sa = ', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -164)
    turtle.write(sa, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -180)
    turtle.write('Seiten sb = ', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -180)
    turtle.write(sb, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -196)
    turtle.write('Seiten sc = ', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -196)
    turtle.write(sc, align="left", font=('Courier', 9, 'normal'))
    # Höhe, Fläche, Umfang
    turtle.goto(xx + 5, -228)
    turtle.write('Die Höhe hc =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -228)
    turtle.write(ho, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -244)
    turtle.write('Fläche des Dreieckes =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -244)
    turtle.write(fl, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 5, -260)
    turtle.write('Umfang des Dreieckes =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 176, -260)
    turtle.write(um, align="left", font=('Courier', 9, 'normal'))
    # Hypotenuse. Umkreis, Innenkreis
    turtle.goto(xx + 250, -228)
    turtle.write('Hypotenuse p =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -228)
    turtle.write(kp, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -244)
    turtle.write('Hypotenuse q =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -244)
    turtle.write(kq, align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 250, -258)
    turtle.write('Radius Umkreis Uk =', align="left", font=('Courier', 9, 'normal'))
    turtle.goto(xx + 420, -258)
    turtle.write(ru, align="left", font=('Courier', 9, 'normal'))
#  Ende    
    turtle.pu() 
    turtle.home () 
    turtle.goto(xx, yy)

    turtle.done()    
   
def symboldruck(druck):
#  Seitenberechnungen    
    pythagorasa = "sqrt(c**2 - b **2)"
    pythagorasb = "sqrt(c**2 - a **2)"
    pythagorasc = "sqrt(a**2 + b **2)"
#  Seiten über Winkelberechnungen    
    sinseitec = "(seitea / sin(((wi_alpha * pi)/180)))"
    cosseitec = "(seitea / cos(((wi_beta * pi)/180)))"   
#  Winkelberechnungen über Seiten     
    winkelaa = "(((arcsin(seitea/seitec)) *180))/pi"
#  Höhe, Fläche und Umfang     
    umfang =  "seitea + seitec + seiteb"
    flaeche = "(seitea * seiteb)/2"
    hoehe =   "(seitea * seiteb) / seitec"
#  Kreise       
    radumkreis = "seitec/2"
    radinkreis = "((seitea * seiteb)/(seitea + seiteb + seitec))"
#  Aussenwinkel
    awinkela = "360-winkela"
    awinkelb = "360-winkelb"
    awinkely = "360-winkely"
#  Feuerbachkreis
    radfeuerb = "radumkreis / 2)"
#    Kathetensatz - Hypotenusenabschnitte       
    katp = "(seitea **2)/seitec"
    katq = "(seiteb **2)/seitec"
#    Größtes Rechteck im Dreieck bei rewi = h/2 * c/2
    grorechtecka = "seitec/2"
    grorechteckb = "hoehe/2"
    flgrorecht = "grorechtecka * grorechteckb"
    umgrorecht = "2 * grorechtecka + 2 * grorechteckb"
    flaprozvomdrei = "((flrecht / fldrei) * 100)"     
#  Winkelhalbierende    
    laengewha = "(2 * seiteb * seitec * cos(((winkela * pi) / 180)/2)) / (seiteb + seitec)"   
    laengewhb = "(2 * seitea * seitec * cos(((winkelb * pi) / 180)/2))/(seitea + seitec)"    
    laengewhy = "(2 * seitea * seiteb * cos(((winkely * pi) / 180)/2))/(seitea + seiteb)"    
#    Seitenhalbierende
    seitha = "sqrt(seitea **2 / 4 + (seiteb **2))"    
    seithb = "sqrt(seitea **2 + (seiteb **2 / 4))"    
    seithc = "seitec/2"
#    Ankreise
    radankreisa = "(seitec + seitea - seiteb ) /2"     
    radankreisb = "(seitec + seiteb - seitea ) /2"  
    radankreisc = "(seitec + seiteb + seitea ) /2" 
#    Größtes Quadrat im Dreieck
    quad1 = "(seitea * seiteb) / (seitea + seiteb)"
    quad2 = "(hoehe * seitec) / (hoehe + seitec)"
    quadfl = "quad1 * quad1"
    quadum = "quad1* 4"
    flaprozvomquad = "(quadfl / flaeche) * 100"
    
    if druck == "p":
#  Seitenberechnungen                
        print()
        print( "Seiten a wird über den Satz des Pythagoras ermittelt:  ", end=' '), \
        print(pythagorasa) 
        print( "Seiten b wird über den Satz des Pythagoras ermittelt:  ", end=' '), \
        print(pythagorasb) 
        print( "Seiten c wird über den Satz des Pythagoras ermittelt:  ", end=' '), \
        print(pythagorasc)         
        print()
#  Seiten über Winkelberechnungen            
        print( "Seiten c über a und Sinus mit Umwandlung von Grad:  ", end=' '), \
        print(sinseitec)  
        print( "Seiten c über a und Cosinus mit Umwandlung von Grad:  ", end=' '), \
        print(cosseitec)         
        print()
#  Winkelberechnungen           
        print( "Winkel A über Seite a, c mit arcsin und Umwandlung in Grad  ", end=' '), \
        print(winkelaa)    
        print()        
#  Höhe, Fläche und Umfang       
        print( "Der Umfang des Dreiecks  ", end=' '), \
        print(umfang)  
        print( "Die Fläche des Dreiecks  ", end=' '), \
        print(flaeche)    
        print( "Die Höhe des Dreiecks  ", end=' '), \
        print(hoehe)            
        print()    
#  Kreise   
        print( "Radius des Umkreises  ", end=' '), \
        print(radumkreis)  
        print( "Radius des Innenkreises  ", end=' '), \
        print(radinkreis)              
        print()  
#  Aussenwinkel
        print( "Der Aussenwinkel Alpha  ", end=' '), \
        print(awinkela)  
        print( "Der Aussenwinkel Beta   ", end=' '), \
        print(awinkelb)    
        print( "Der Aussenwinkel Gamma  ", end=' '), \
        print(awinkely)            
        print()   
#  Feuerbachkreis
        print( "Der Radius des Feuerbachkreises  ", end=' '), \
        print(radfeuerb)    
        print() 
#    Kathetensatz - Hypotenusenabschnitte    
        print( "Hypotenusenabschnit q   ", end=' '), \
        print(katq)  
        print( "Hypotenusenabschnit p   ", end=' '), \
        print(katp)              
        print()          
#    Größtes Rechteck im Dreieck bei rewi = h/2 * c/2
        print( "Länge a des grössten Rechtecks im Dreick:  ", end=' '), \
        print(grorechtecka) 
        print( "Länge b des grössten Rechtecks im Dreick:  ", end=' '), \
        print(grorechteckb) 
        print( "Umfang des grössten Rechtecks im Dreick:   ", end=' '), \
        print(umgrorecht)  
        print( "Fläche des grössten Rechtecks im Dreick:   ", end=' '), \
        print(flgrorecht)   
        print( "Prozentualer Anteil Rechteck im Dreick:    ", end=' '), \
        print(flaprozvomdrei)           
        print()
#  Winkelhalbierende  
        print( "Die Winkelhalbierende Alpha  ", end=' '), \
        print(laengewha)  
        print( "Die Winkelhalbierende Beta   ", end=' '), \
        print(laengewhb)    
        print( "Die Winkelhalbierende Gamma  ", end=' '), \
        print(laengewhy)            
        print()   
#    Seitenhalbierende
        print( "Die Seitenhalbierende a   ", end=' '), \
        print(seitha)  
        print( "Die Seitenhalbierende b   ", end=' '), \
        print(seithb)    
        print( "Die Seitenhalbierende c   ", end=' '), \
        print(seithc)            
        print()          
#    Ankreise
        print( "Der Radius des Ankreis a beträgt   ", end=' '), \
        print(radankreisa)  
        print( "Der Radius des Ankreis b beträgt   ", end=' '), \
        print(radankreisb)    
        print( "Der Radius des Ankreis c beträgt   ", end=' '), \
        print(radankreisc)            
        print()            
#    Größtes Quadrat im Dreieck        
        print( "Länge a des grössten Quadradts im Dreick:  ", end=' '), \
        print(quad1) 
        print( "oder mit dieser Formel, je nach Lage    :  ", end=' '), \
        print(quad2) 
        print( "Umfang des grössten Quadradts im Dreick:   ", end=' '), \
        print(quadum)  
        print( "Fläche des grössten Quadradts im Dreick:   ", end=' '), \
        print(quadfl)   
        print( "Prozentualer Anteil Quadrat im Dreick:     ", end=' '), \
        print(flaprozvomquad)           
        print()

  
Antworten