我正在研究幾何問題,需要找到任何旋轉中的兩個拋物線弧的交點。通過旋轉平面使弧線與軸線對齊,我能夠將線條和拋物線弧線合併,但是兩個拋物線不能與軸線對齊。我正致力於推導公式,但我想知道是否有可用於此的資源。任何旋轉中兩個拋物線相交的代碼或公式
5
A
回答
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。
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]]]
}]}]
一般的解決方法包括計算的根:這是在任何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
。
相關問題
- 1. 在3D引擎中與旋轉飛機相交的拋物線
- 2. 在MATLAB中繪製*旋轉*拋物線
- 3. 如何找到對象的拋物線公式?
- 4. 兩個相撞的圓圈,無法將公式轉換成代碼
- 5. 旋轉代碼
- 6. 如何找到兩個相反的法線或兩個線段?
- 7. 如何公式轉換爲TLA +代碼
- 8. 如何將交易相關代碼轉換爲非交易相關代碼?
- 9. 圍繞物體旋轉相機vs圍繞其中心旋轉物體
- 10. 公制比較如何相似的兩個二維線性線
- 11. 公式兩列中任意兩個值之間的最大差異公式
- 12. 拋物線曲線和線段的交點
- 13. 確定是否兩條線段的公差相交
- 14. 物體不能繞其軸線旋轉
- 15. 在Cannon.js中定位一個物體相對於局部旋轉
- 16. NVIDIA GPU彙編代碼(SASS)中的線程ID旋轉
- 17. 拋物線方程
- 18. 旋轉瓶的簡單公式
- 19. 如何旋轉異物
- 20. 使用Qt繪製拋物線或其他多項式
- 21. 在opengl中旋轉物體
- 22. 旋轉代碼字體中的fontImage
- 23. 旋轉一個物體以面對相反的方向
- 24. 確定線段是否與圓形相交的公式(平面)
- 25. C++交換兩個使用的代碼
- 26. 旋轉物體onclick
- 27. 檢測旋轉矩形相交
- 28. 旋轉一個物體或改變剔除的臉?
- 29. 如何旋轉兩個UIView的?
- 30. 如何檢查兩個矩形(一個是旋轉的)是否在SFML中相交
如何在C++中解決這個方程組(因此不用內置的Matlab函數) http://math.stackexchange.com/questions/1894043/solve-squared-non-linear-system-with-two -Equations – 2016-08-16 14:43:33