我的三角函數需要一些幫助。沿路徑查找座標
我該如何計算最近可能的交點與沿圓角的一條直線的交點?
採取這一形象:
我想知道的是什麼,因爲我知道點,和矩形的尺寸,我如何才能找到b點時矩形的邊緣是彎曲的?
到目前爲止,正如你所看到的,我只設法計算矩形的最近邊緣,就好像它有直角拐角一樣。
如果很重要,我在ActionScript 3中這樣做。但是sudo-code的例子就足夠了。
我的三角函數需要一些幫助。沿路徑查找座標
我該如何計算最近可能的交點與沿圓角的一條直線的交點?
採取這一形象:
我想知道的是什麼,因爲我知道點,和矩形的尺寸,我如何才能找到b點時矩形的邊緣是彎曲的?
到目前爲止,正如你所看到的,我只設法計算矩形的最近邊緣,就好像它有直角拐角一樣。
如果很重要,我在ActionScript 3中這樣做。但是sudo-code的例子就足夠了。
計算從眼角中點M
的載體A
:
v_x = a_x - m_x
v_y = a_y - m_y
然後去拐角半徑r
次向A
去交點I
i_x = m_x + r*v_x
i_y = m_y + r*v_y
這顯然只適用於最近的十字路口在圓角上。只需計算邊緣的其他交點,然後檢查哪一個與A
距離最近。
您需要知道生成圓角的圓的半徑R
以及非圓角矩形的兩側相交的點的座標(Xr,Yr)
。
那麼對於圓的,其產生的圓角中心的座標爲(Xc, Yc) = (Xr-R, Yr-R)
從這裏,這是解決該段線之間的交叉點由點A=(Xa, Ya)
和點(Xc, Yc)
定義的公式的問題,它的參數方程爲:
x = Xa + p*(Xc-Xa)
y = Ya + p*(Yc-Ya)
,其公式爲圓
(x-Xc)^2 + (y-Yc)^2 = R^2
從圓的方程中線的參數估計值中替換x
和y
的值,您將只有一個方程式,其中只有一個未知值:p
。求解方程,如果有多個解,請選擇範圍爲[0,1]
的那個。在線的參數方程中替換找到的值p
以獲得交點。
圖形:
如果知道角爲R和C =(XC,YC)的半徑和中心,然後在角給定的點A =最近的點( Xa,Ya)是角點與由給定點和中心定義的線的交點。這一點可以直接表示爲
X = Xc + R *(Xa-Xc)/ | AC |
Y = Yc + R *(Ya-Yc)/ | AC |
其中| AC | = Sqrt((Xa-Xc)^ 2 +(Ya-Yc)^ 2)
如果ActionScript支持頭等路徑,請考慮創建兩個路徑並調用交集例程。這通常比創建明確的公式容易。 – soegaard