2012-07-16 114 views
0

可能重複:
intersection of line and circle with different slope線和圓相交

我具有由繪製然後pp=randi([-400 400],2,2)x=pp(:,1)y=pp(:,2)。我有一個半徑爲r的圓心(a,b)

我想檢查圓和線的交點。

我用polyfit命令來檢查斜率和截距。然後我使用lincirc命令,但問題是如果線路只穿過一個點,那麼另一個點也顯示。

例如,如果該線穿過一個側面和在中途停止,它示出了另一點,以及將不能穿過邊界

+0

所以當你得到2分的時候,爲什麼不簡單地檢查你的線的端點是否在圓內?如果是這樣,你只有1個交叉點,如果不是那麼你有2個?你有線方程和圓方程,所以你有你需要的所有信息。 – mathematician1975 2012-07-16 17:02:03

+0

我將如何檢查?請你幫忙 – 2012-07-16 17:06:02

+0

請看下面的答案。 – mathematician1975 2012-07-16 17:13:42

回答

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功能會告訴你還有2分)

如果這兩點都在圈子裏面,那麼你的lincirc功能在騙你。

+0

非常感謝你 – 2012-07-16 17:21:44

+0

不清楚。它不起作用 – 2012-07-16 17:33:36

+0

你能更具體嗎? – mathematician1975 2012-07-16 17:34:55