0

可能重复:
不同斜率的线和圆相交

我有当时绘制的pp=randi([-400 400],2,2)线x=pp(:,1)y=pp(:,2). 我有一个中心 (a,b) 半径为 r 的圆

我想检查圆和线的交点。

我使用polyfit命令来检查斜率和截距。然后我使用lincirc了命令,但问题是如果线只穿过一个点,那么另一个点也会显示出来。

例如,如果线越过一侧并停在中间,它也会显示另一个不会越过边界的点

4

1 回答 1

1

你有一个以 (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 函数就是在骗你。

于 2012-07-16T17:11:11.747 回答