给定两个点的坐标(x,y)属性,确定两点之间的距离。
再给定第三点,判断三点能否构成三角形,构成的三角形是哪种类型(直角,钝角,锐角)
import math
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def Distance(A, B):
distance = math.sqrt((A.x - B.x) ** 2 + (A.y - B.y) ** 2)
return distance
A = Point(5, 10)
print('A点的坐标为(5, 10)')
B = Point(-3, 10)
print('B点的坐标为(-3, 10)')
# d = Distance(A, B)
# print(f'AB两点间的距离为{d})
print('请分别输入C点的坐标,以回车键间隔')
C = Point(float(input()), float(input()))
# 两两间距
a = Distance(B, C) # 点A对的边
b = Distance(A, C) # 点B对的边
c = Distance(A, B) # 点C对的边
if min(a, b, c) == 0 or (C.y-B.y)/(C.x-B.x) == (C.y-A.y)/(C.x-A.x):#保证无重合点或者三点不在一条直线上
print(f'({A.x},{A.y}), ({B.x},{B.y}), ({C.x},{C.y})这三个点不构成三角形')
else:
# 余弦公式
cosA = (b ** 2 + c ** 2 - a ** 2) / (2 * b * c)
cosB = (a ** 2 + c ** 2 - b ** 2) / (2 * a * c)
cosC = (b ** 2 + a ** 2 - c ** 2) / (2 * b * a)
Min = min(cosA, cosB, cosC)
if Min < 0:
print('这是个钝角三角形') # 三角形中钝角的余弦小于0
elif Min == 0:
print('这是个直角三角形') # 直角的余弦为0
else:
print('这是个锐角三角形') # 三个角的余弦都大于0