平面直角坐标系中有一个点 C 和一条线段 AB ,求点 C 和线段 AB 的位置关系。
第一行输入一个 T ,代表测试数据量
每组测试数据输入有三行,每行一个实数坐标 (x, y)分别代表 A,B,C 三个点。
如果点 C 在线段 AB 上, 输出Yes
,否则输出No
;
示例 1
输入
1. 2 2. 0 1 3. 1 0 4. 1 1 5. 0 0 6. 2 2 7. 1 1
输出
1. No 2. Yes
这道题给了我们两个点组成的一条线段AB,还有一个额外的点C,要我们判断这个C点是否在这个直线上,我们可以先判断这个点是否在直线AB上,这里我们可以通过斜率判定,或者把他看成叉积来判定。再判断这个点是否在AB线段所在的区域内,如果都满足条件的话,我们判定该点在线段上,否则不在。
1. def Cross(a,b,c): 2. if (c[0]-a[0])*(a[1]-b[1])==(c[1]-a[1])*(a[0]-b[0])\ #判断是否共线 3. and min(a[0],b[0])<=c[0] and c[0]<=max(a[0],b[0])\ #判断是否在同一区域内 4. and min(a[1],b[1])<=c[1] and c[1]<=max(a[1],b[1]): 5. 6. return True 7. else: 8. return False 9. 10. t=int(input()) 11. for i in range(t): 12. a=tuple(map(float,input().split())) 13. b=tuple(map(float,input().split())) 14. c=tuple(map(float,input().split())) 15. if Cross(a,b,c): 16. print("Yes") 17. else: 18. print("No")
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者