判断点是否在线段上

简介: 判断点是否在线段上

题目描述


平面直角坐标系中有一个点 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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:


这道题给了我们两个点组成的一条线段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")
目录
相关文章
|
4月前
|
算法
空间判断点是否在线段上
空间判断点是否在线段上
34 0
|
4月前
|
算法 C++
平面中判断线段与矩形是否相交
平面中判断线段与矩形是否相交
68 0
|
7月前
|
存储 算法 Java
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
53 0
三角形判断
三角形判断
86 0
判断线段是否相交
判断线段是否相交
94 0
16:三角形判断
16:三角形判断
115 0
给你n个线段,代表线段的左右端点,问最少删几条线段,使得剩下当中存在一个线段与所有剩下的所有线段都有交集
考虑枚举每一条线段,求以此线段与所有线段都有交集,需要删除的线段数。 那么对于此线段[L,R],右端点小于L的,与它无交集,需要全删掉。同理左端点大于R的线段,也需要都删掉。 那么剩下的问题,就是需要删几个了。
112 0
|
算法
如何判断一个点是否在多边形内部?
如何判断一个点是否在多边形内部?
1153 0
|
C++ 计算机视觉
判断一个点是否在RotatedRect中
openCV函数pointPolygonTest(): C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist) 用于判断一个点是否在轮廓中 当measureDist设置为true时,若返回值为正,表示点在轮廓内部,返回值为负,表示在轮廓外部,返回值为0,表示在轮廓上。
1677 0