def
lineFromPoints(P, Q, a, b, c):
a
=
Q[
1
]
-
P[
1
]
b
=
P[
0
]
-
Q[
0
]
c
=
a
*
(P[
0
])
+
b
*
(P[
1
])
return
a, b, c
def
perpenBisectorFromLine(P, Q, a, b, c):
mid_point
=
[
0
,
0
]
mid_point[
0
]
=
(P[
0
]
+
Q[
0
])
/
2
mid_point[
1
]
=
(P[
1
]
+
Q[
1
])
/
2
c
=
(
-
b
*
(mid_point[
0
])
+
a
*
(mid_point[
1
]))
temp
=
a
a
=
-
b
b
=
temp
return
a, b, c
def
LineInterX(a1, b1, c1, a2, b2, c2):
determ
=
a1
*
b2
-
a2
*
b1
x
=
(b2
*
c1
-
b1
*
c2)
x
/
=
determ
return
x
def
LineInterY(a1, b1, c1, a2, b2, c2):
determ
=
a1
*
b2
-
a2
*
b1
y
=
(a1
*
c2
-
a2
*
c1)
y
/
=
determ
return
y
def
findPosition(P, Q, R, D):
r
=
[
0
,
0
]
a, b, c
=
lineFromPoints(P, Q,
0
,
0
,
0
)
e, f, g
=
lineFromPoints(Q, R,
0
,
0
,
0
)
a, b, c
=
perpenBisectorFromLine(P, Q,
a, b, c)
e, f, g
=
perpenBisectorFromLine(Q, R,
e, f, g)
r[
0
]
=
LineInterX(a, b, c, e, f, g)
r[
1
]
=
LineInterY(a, b, c, e, f, g)
q
=
((r[
0
]
-
P[
0
])
*
(r[
0
]
-
P[
0
])
+
(r[
1
]
-
P[
1
])
*
(r[
1
]
-
P[
1
]))
dis
=
((r[
0
]
-
D[
0
])
*
(r[
0
]
-
D[
0
])
+
(r[
1
]
-
D[
1
])
*
(r[
1
]
-
D[
1
]))
if
(dis < q):
print
(
"Point ("
, D[
0
],
","
, D[
1
],
") is inside the circumcircle"
)
elif
(dis
=
=
q):
print
(
"Point ("
, D[
0
],
","
, D[
1
],
") lies on the circumcircle"
)
else
:
print
(
"Point ("
, D[
0
],
","
, D[
1
],
") lies outside the circumcircle"
)
if
__name__
=
=
'__main__'
:
A
=
[
2
,
8
]
B
=
[
2
,
1
]
C
=
[
4
,
5
]
D
=
[
3
,
0
]
findPosition(A, B, C, D)