Re: [問題] 線與圓 聯立方程式
※ 引述《yu1 (~renard~)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 請問c++有沒有 給一個圓的方程式與一條線的方程式解交點 的函式
: 希望得到的正確結果:
: 希望得到線與圓的交點座標
: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: VC++
基本上沒有
要自己寫
寫法並不困難
你可以假設
2 2 2
圓的方程式 : (X-h) + (Y-k) = r 中心點(h,k) 半徑 r
直線方程式 : aX + bY + c = 0
先判斷是否有交點 : 利用點到直線的公式來判斷
|a*h + b*k + c|
d = ------------------ > r 交於兩點 [相割]
2 2 1/2
( a + b ) = r 交於一點 [相切]
先算出圓心和直線方程式的垂足 (x1,y1)
很明顯的 直線的法向量是 (a,b)所以它的方向向量就是 (-b,a)
把直線方程式利用直線的參數式
x = x1 + -b*t
而t等於多少呢?
y = y1 + a*t
圓心(h,k)
想成是有一個直角三角形 斜邊 r /|
/ | 點到直線距離d
/____|
剩下的這股就是t
用上面的公式輕鬆幾行就寫完了
帶入即為所求
不過建議先把圓和直線包成物件再傳入function比較符合物件導向的想法
未來程式的maintain也比較方便
--
Iteration is human, recursion is divine
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.6.30
討論串 (同標題文章)