2015-05-03 144 views
1

我的三角函數需要一些幫助。沿路徑查找座標

我該如何計算最近可能的交點與沿圓角的一條直線的交點?

採取這一形象:

example

我想知道的是什麼,因爲我知道,和矩形的尺寸,我如何才能找到b點時矩形的邊緣是彎曲的?

到目前爲止,正如你所看到的,我只設法計算矩形的最近邊緣,就好像它有直角拐角一樣。

如果很重要,我在ActionScript 3中這樣做。但是sudo-code的例子就足夠了。

+0

如果ActionScript支持頭等路徑,請考慮創建兩個路徑並調用交集例程。這通常比創建明確的公式容易。 – soegaard

回答

0

計算從眼角中點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距離最近。

0

您需要知道生成圓角的圓的​​半徑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 

從圓的方程中線的參數估計值中替換xy的值,您將只有一個方程式,其中只有一個未知值:p。求解方程,如果有多個解,請選擇範圍爲[0,1]的那個。在線的參數方程中替換找到的值p以獲得交點。

圖形:

Rounded rect intersection

0

如果知道角爲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)