我的行由pp=randi([-400 400],2,2)
然后x=pp(:,1)
和y=pp(:,2)
绘制。我有一个圆心,中心(a,b)半径为r
我想检查圆和线的交点。
我使用polyfit
命令来检查斜率和截距。然后我使用lincirc
命令,但问题是如果线只穿过一个点,那么另一个点也会显示。
例如,如果线穿过一侧并在中间停止,则它也会显示另一个不会越过边界的点
答案 0 :(得分:1)
圆心半径r以(a,b)为中心。你有一条线。如果绘制了这些点,则必须将数据存储在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函数告诉你有两个点)
如果两个点都在圆圈内,那么你的lincirc函数就在你身边。