可能重复:
不同斜率的线和圆相交
我有当时绘制的pp=randi([-400 400],2,2)
线x=pp(:,1)
和y=pp(:,2)
. 我有一个中心 (a,b) 半径为 r 的圆
我想检查圆和线的交点。
我使用polyfit
命令来检查斜率和截距。然后我使用lincirc
了命令,但问题是如果线只穿过一个点,那么另一个点也会显示出来。
例如,如果线越过一侧并停在中间,它也会显示另一个不会越过边界的点
可能重复:
不同斜率的线和圆相交
我有当时绘制的pp=randi([-400 400],2,2)
线x=pp(:,1)
和y=pp(:,2)
. 我有一个中心 (a,b) 半径为 r 的圆
我想检查圆和线的交点。
我使用polyfit
命令来检查斜率和截距。然后我使用lincirc
了命令,但问题是如果线只穿过一个点,那么另一个点也会显示出来。
例如,如果线越过一侧并停在中间,它也会显示另一个不会越过边界的点
你有一个以 (a,b) 为中心的圆半径 r。你有一条线。如果您绘制了这些点,则必须将数据存储在 x 和 y 向量中,因此您将每个元素的第一个和最后一个元素作为 (x,y) 坐标。第一对形成线的起点,最后一对形成终点。将这些点称为 (c1,d1) 和 (c2,d2)。假设您的 lincirc 函数告诉您直线和圆之间有 2 个交点,计算
A1 = (c1-a,d1-b)
A2 = (c2-a,d2-b)
现在如果
norm(A1,2) < r
然后端点(c1,d1)在你的圈子内,如果
norm(A2,2) < r
然后端点(c2,d2)在你的圈子内。
如果其中一个点在圆内,那么您只有一个交点。
如果两个点都不在圆内,那么您知道您的线两次穿过圆(假设您的 lincirc 函数告诉您有 2 个点)
如果两个点都在圆圈内,那么你的 lincirc 函数就是在骗你。