def distance((x1, y1), (x2, y2)):
return sqrt((x2-x1)^2 + (y2-y1)^2)
def angle(a, b, c):
return acos((b^2 + c^2 - a^2)/(2*b*c))
def area(alpha, a, b):
return 1/2*a*b*sin(alpha)
xy = [0]*3
@interact
def triangle(
a0 = slider(0, 360, 1, 30, label="A"),
a1 = slider(0, 360, 1, 180, label="B"),
a2 = slider(0, 360, 1, 300, label="C")
):
a = [math.radians(a0), math.radians(a1), math.radians(a2)]
for i in range(3):
xy[i] = (cos(a[i]), sin(a[i]))
al = [distance(xy[1], xy[2]), distance(xy[2], xy[0]), distance(xy[0], xy[1])]
ak = [angle(al[0], al[1], al[2]), angle(al[1], al[2], al[0]), angle(al[2], al[0], al[1])]
A = area(ak[0], al[1], al[2])
unit_circle = circle((0, 0), 1, aspect_ratio=1)
triangle = line([xy[0], xy[1], xy[2], xy[0]], rgbcolor="black")
triangle_points = point(xy, pointsize=30)
a_label = text("A", (xy[0][0]*1.07, xy[0][1]*1.07))
b_label = text("B", (xy[1][0]*1.07, xy[1][1]*1.07))
c_label = text("C", (xy[2][0]*1.07, xy[2][1]*1.07))
labels = a_label + b_label + c_label
show(unit_circle + triangle + triangle_points + labels, figsize=[5, 5], xmin=-1, xmax=1, ymin=-1, ymax=1)
html(
"$\\angle A = %s^\\circ,$ "
"$\\angle B = %s^\circ,$ "
"$\\angle C = %s^\circ$" % (
math.degrees(ak[0]),
math.degrees(ak[1]),
math.degrees(ak[2])
)
)
html("$AB = %s,$ $BC = %s,$ $CA = %s$"%(al[2], al[0], al[1]))
html("$\\text{Area A} = %s$"%A)