2008-09-24 56 views
5

我正在研究幾何問題,需要找到任何旋轉中的兩個拋物線弧的交點。通過旋轉平面使弧線與軸線對齊,我能夠將線條和拋物線弧線合併,但是兩個拋物線不能與軸線對齊。我正致力於推導公式,但我想知道是否有可用於此的資源。任何旋轉中兩個拋物線相交的代碼或公式

回答

6

我首先定義公式在2D拋物線弧旋轉無:通過建立一個旋轉矩陣

x(t) = ax² + bx + c 
    y(t) = t; 

現在可以應用旋轉:

s = sin(angle) 
    c = cos(angle) 

    matrix = | c -s | 
      | s c | 

應用該矩陣你會得到旋轉參數方程:

x' (t) = x(t) * c - s*t; 
y' (t) = x(t) * s + c*t; 

這會給你兩個等式(用於x和y)的拋物弧線。

爲你的兩個旋轉弧線做這些並且減去它們。這給你一個這樣的公式:

xa'(t) = rotated equation of arc1 in x 
    ya'(t) = rotated equation of arc1 in y. 
    xb'(t) = rotated equation of arc2 in x 
    yb'(t) = rotated equation of arc2 in y. 
    t1 = parametric value of arc1 
    t2 = parametric value of arc2 

    0 = xa'(t1) - xb'(t2) 
    0 = ya'(t1) - yb'(t2) 

這些方程中的每一個只是一個2階多項式。這些很容易解決。

要找到交點,您可以解出上面的公式(例如找到根)。

對於每個軸,您將得到兩個根。任何在x和y上相等的根都是曲線之間的交點。

現在獲取位置很簡單:只需將根插入參數方程中,即可直接獲取x和y。

+0

如何在C++中解決這個方程組(因此不用內置的Matlab函數) http://math.stackexchange.com/questions/1894043/solve-squared-non-linear-system-with-two -Equations – 2016-08-16 14:43:33

1

不幸的是,一般的答案需要解四階多項式。如果我們轉換座標使得兩個拋物線中的一個處於標準形式y = x^2,那麼第二個拋物線滿足(ax + by)^ 2 + cx + dy + e == 0。要找到交集,同時解決兩個問題。代入y = x^2,我們看到結果是一個四階多項式:(ax + bx^2)^ 2 + cx + dx^2 + e == 0。因此Nils解決方案將不起作用(他的錯誤:每個變量都是分別在每個變量中的二階多項式,但是它們不在一起)。

1

如果您手邊有CAS,很容易。

請參閱Mathematica中的解決方案。

選擇一個拋物線並更改座標,使其方程變爲y(x)= a x^2(標準形式)。

其他拋物線將具有通用形式:

A x^2 + B x y + CC y^2 + DD x + EE y + F == 0 

where B^2-4 A C ==0 (so it's a parabola) 

讓我們解決一個數字的情況下:

p = {a -> 1, A -> 1, B -> 2, CC -> 1, DD -> 1, EE -> -1, F -> 1}; 
p1 = {[email protected]@Reduce[ 
     (A x^2 + B x y + CC y^2 + DD x + EE y +F /. {y -> a x^2 } /. p) == 0, x]} 

{{X - > -2.11769},{X - > -0.641445}, {x - > 0.379567- 0.76948}, {x - > 0.379567 + 0。76948 I}}

我們繪製它:

Show[{ 
    Plot[a x^2 /. p, {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}], 
    ContourPlot[(A x^2 + B x y + CC y^2 + DD x + EE y + F /. p) == 
    0, {x, -10, 10}, {y, -10, 10}], 
    Graphics[{ 
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[1]]], 
    PointSize[Large], Pink, Point[{x, x^2} /. p /. p1[[2]]] 
    }]}] 

enter image description here

一般的解決方法包括計算的根:這是在任何CAS輕鬆完成

4 A F + 4 A DD x + (4 A^2 + 4 a A EE) x^2 + 4 a A B x^3 + a^2 B^2 x^4 == 0