def kaari(keskipiste, sade, alkukulma, loppukulma, nimi = "", kohta = 0, puoli = True, piirra = True): """Sama kuin 'ympyra', mutta piirtää vain kaaren kulmasta 'alkukulma' kulmaan 'loppukulma'.""" if(piirra): with paksuus(0.75): kuvaaja.piirraParametri( lambda t: keskipiste[0] + sade * cos(t), lambda t: keskipiste[1] + sade * sin(t), pi * alkukulma / 180, pi * loppukulma / 180, nimi, pi * kohta / 180, kohta + 180 * int(not puoli) ) return {"tyyppi": "ympyra", "keskipiste": keskipiste, "sade": sade}
def kulma(A, B, C, nimi = "", monista = 1, kasvata = 0, suunta = None, piirra = True): """Piirtää kulman ABC. Kulma piirretään 'monista'-kertaisena. Kulmaympyrän sädettä kasvatetaan arvolla 'kasvata' tavallisesta. Nimen merkitsemissuunta valitaan 'suunta'-parametrilla. Palauttaa kulmaolion.""" alkukulma = atan2(A[1] - B[1], A[0] - B[0]) loppukulma = atan2(C[1] - B[1], C[0] - B[0]) if(loppukulma < alkukulma): loppukulma += 2 * pi if piirra: Ap = muunna(A) Bp = muunna(B) Cp = muunna(C) alkukulmap = atan2(Ap[1] - Bp[1], Ap[0] - Bp[0]) loppukulmap = atan2(Cp[1] - Bp[1], Cp[0] - Bp[0]) if(loppukulmap < alkukulmap): loppukulmap += 2 * pi valikulmap = 0.5 * (alkukulmap + loppukulmap) nimip = valikulmap if suunta is not None: nimip = pi * suunta / 180 kulmap = loppukulmap - alkukulmap sade = min(max(0.35 / kulmap, 0.5), 3) + kasvata with oletusasetukset(): paksuus(0.45) for i in range(monista): kuvaaja.piirraParametri( lambda t: Bp[0] + sade * cos(t), lambda t: Bp[1] + sade * sin(t), alkukulmap, loppukulmap, nimi, nimip, 180 * nimip / pi ) nimi = "" sade -= 0.04 return {"tyyppi": kulma, "alkukulma": alkukulma, "loppukulma": loppukulma}