63 lines
1.3 KiB
Python
63 lines
1.3 KiB
Python
import math
|
|
|
|
def side(a, b):
|
|
return math.sqrt(math.pow(b[0]-a[0],2)+math.pow(b[1]-a[1],2))
|
|
|
|
def heron(a, b, c):
|
|
s=0.5*(a+b+c)
|
|
return math.sqrt(s*((s-a)*(s-b)*(s-c)))
|
|
|
|
def circle_triangle(a):
|
|
return math.asin(a/2)-((a/4)*math.sqrt(4-math.pow(a,2)))
|
|
|
|
A = (1,1)
|
|
B = (2.5,1)
|
|
C = (2,2)
|
|
|
|
## Using the algorithm provided in the document... find the intersections
|
|
|
|
A_intersec = (1.51,1.13)
|
|
B_intersec = (2,1)
|
|
C_intersec = (1.75,1.66)
|
|
|
|
## Calcul des longueurs via distance euclidienne
|
|
AB=side(A_intersec,B_intersec)
|
|
BC=side(B_intersec,C_intersec)
|
|
CA=side(C_intersec,A_intersec)
|
|
|
|
## Formule de Héron
|
|
triangle_area=heron(AB,BC,CA)
|
|
|
|
## Calcul des cercles autour des triangles
|
|
c_AB = circle_triangle(AB)
|
|
c_BC = circle_triangle(BC)
|
|
c_CA = circle_triangle(CA)
|
|
print(c_AB)
|
|
print(c_BC)
|
|
print(c_CA)
|
|
|
|
area = triangle_area + c_AB + c_BC + c_CA
|
|
|
|
# print(f"Triangle area: {heron(side(A,B),side(B,C),side(C,A))}")
|
|
# print(f"Intersection triangle area: {triangle_area}")
|
|
print(f"Total area (3 circles): {area}")
|
|
|
|
## Two circles
|
|
|
|
CA_i0=(2,1)
|
|
CA_i1=(1,2)
|
|
|
|
AB_i0=(1.75,1.66)
|
|
AB_i1=(1.75,0.34)
|
|
|
|
BC_i0=(1.51,1.13)
|
|
BC_i1=(3,1.87)
|
|
|
|
AB=side(AB_i0,AB_i1)
|
|
BC=side(BC_i0,BC_i1)
|
|
CA=side(CA_i0,CA_i1)
|
|
|
|
area_two = 2*circle_triangle(AB) + 2*circle_triangle(BC) + 2*circle_triangle(CA)
|
|
print(f"Total area (2 circles): {area_two-3*area}")
|
|
|
|
print(f"Total area (1 circle): {(3*math.pi)-(area_two-2*area)}")
|