问题描述
小M正在玩一个几何游戏,给定一个二维平面上的三个点 points
,其中每个点用坐标 points[i] = [xi, yi]
表示。如果三点构成一个回旋镖,则返回 true
。回旋镖的定义是三点不在一条直线上,并且这三个点互不相同。
请你帮助小M判断这些点是否构成一个回旋镖。
测试样例
样例1:
输入:
points = [[1, 1], [2, 3], [3, 2]]
输出:True
样例2:
输入:
points = [[1, 1], [2, 2], [3, 3]]
输出:False
样例3:
输入:
points = [[0, 0], [1, 1], [1, 0]]
输出:True
def solution(points: list) -> bool:
# 检查三点是否互不相同
if points[0] == points[1] or points[0] == points[2] or points[1] == points[2]:
return False
# 解构三个点的坐标
(x1, y1), (x2, y2), (x3, y3) = points
# 计算叉积,判断三点是否共线
# 使用的公式是: (x2 - x1) * (y3 - y1) != (y2 - y1) * (x3 - x1)
return (x2 - x1) * (y3 - y1) != (y2 - y1) * (x3 - x1)
if __name__ == '__main__':
# 测试用例
print(solution(points=[[1, 1], [2, 3], [3, 2]]) == True) # 输出: True
print(solution(points=[[1, 1], [2, 2], [3, 3]]) == False) # 输出: False
print(solution(points=[[0, 0], [1, 1], [1, 0]]) == True) # 输出: True