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}