任意の回転で 2 つの放物線円弧の交点を見つける必要があるジオメトリの問題に取り組んでいます。平面を回転させて円弧を軸に揃えることで、直線と放物線の円弧を交差させることができましたが、2 つの放物線を両方とも軸に揃えることはできません。式の導出に取り組んでいますが、これに使用できるリソースが既にあるかどうかを知りたいです。
3 に答える
最初に、回転のない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;
これにより、放物線状の円弧の2つの方程式(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次の多項式です。これらは簡単に解決できます。
交点を見つけるには、上記の方程式を解きます(たとえば、根を見つけます)。
軸ごとに最大2つの根を取得します。xとyで等しい根は、曲線間の交点です。
位置の取得は簡単になりました。ルートをパラメトリック方程式に接続するだけで、xとyを直接取得できます。
手元にCASがあれば簡単です。
Mathematica のソリューションを参照してください。
放物線を 1 つ選び、その方程式が y(x)=ax^2 (正規形) になるように座標を変更します。
もう 1 つの放物線は、次の一般的な形になります。
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 = {ToRules@N@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 I}, {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]]]
}]}]
一般的な解決策には、次の根を計算することが含まれます。
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
これはどの CAS でも簡単に実行できます。
残念ながら、一般的な答えには 4 次多項式の解が必要です。2 つの放物線の 1 つが標準形式 y=x^2 になるように座標を変換すると、2 番目の放物線は (ax+by)^2+cx+dy+e==0 を満たします。交点を見つけるには、両方を同時に解決します。y=x^2 に代入すると、結果が 4 次多項式 (ax+bx^2)^2+cx+dx^2+e==0 であることがわかります。したがって、Nils ソリューションは機能しません (彼の間違い: 各変数は個別に 2 次多項式ですが、一緒にするとそうではありません)。