📅  最后修改于: 2023-12-03 15:26:36.032000             🧑  作者: Mango
本程序用于查找三角形的重心、外心、内心以及垂心的坐标。
程序接受用户输入三角形的三个顶点坐标,格式为(x1, y1), (x2, y2), (x3, y3)。
程序将返回四种中心点的坐标,格式为(x, y),并按照markdown格式输出。
import math
def distance(point1, point2):
# 计算两点距离
dis = math.sqrt((point1[0]-point2[0])**2 + (point1[1]-point2[1])**2)
return dis
def tri_center(p1, p2, p3):
# 计算三角形重心
x = (p1[0] + p2[0] + p3[0])/3
y = (p1[1] + p2[1] + p3[1])/3
return x, y
def tri_circumcenter(p1, p2, p3):
# 计算三角形外心
a = distance(p1, p2)
b = distance(p1, p3)
c = distance(p2, p3)
p = a + b + c
x = (a*p*(b+c-a)*p1[0] + b*p*(a+c-b)*p2[0] + c*p*(a+b-c)*p3[0])/(16*(a+b+c)**2)
y = (a*p*(b+c-a)*p1[1] + b*p*(a+c-b)*p2[1] + c*p*(a+b-c)*p3[1])/(16*(a+b+c)**2)
return x, y
def tri_incenter(p1, p2, p3):
# 计算三角形内心
a = distance(p1, p2)
b = distance(p1, p3)
c = distance(p2, p3)
p = a + b + c
x = (a*p1[0] + b*p2[0] + c*p3[0])/p
y = (a*p1[1] + b*p2[1] + c*p3[1])/p
return x, y
def tri_orthocenter(p1, p2, p3):
# 计算三角形垂心
a = distance(p2, p3)
b = distance(p1, p3)
c = distance(p1, p2)
A = math.acos((b**2 + c**2 - a**2)/(2*b*c))
B = math.acos((a**2 + c**2 - b**2)/(2*a*c))
C = math.acos((a**2 + b**2 - c**2)/(2*a*b))
x = (p1[0]*math.tan(A) + p2[0]*math.tan(B) + p3[0]*math.tan(C))/(math.tan(A) + math.tan(B) + math.tan(C))
y = (p1[1]*math.tan(A) + p2[1]*math.tan(B) + p3[1]*math.tan(C))/(math.tan(A) + math.tan(B) + math.tan(C))
return x, y
# 用户输入三角形三个点的坐标
p1 = tuple(map(float, input("输入第一个点的坐标(x1, y1): ").split()))
p2 = tuple(map(float, input("输入第二个点的坐标(x2, y2): ").split()))
p3 = tuple(map(float, input("输入第三个点的坐标(x3, y3): ").split()))
# 计算并输出四种中心点的坐标
print("重心坐标为:", tri_center(p1, p2, p3))
print("外心坐标为:", tri_circumcenter(p1, p2, p3))
print("内心坐标为:", tri_incenter(p1, p2, p3))
print("垂心坐标为:", tri_orthocenter(p1, p2, p3))
以上为查找三角形中心的程序,使用者只需输入三角形的三个顶点坐标,即可得到重心、外心、内心以及垂心的坐标。本程序已对输入格式和输出格式做了详细说明。