私はPythonで基本的な2D形状ライブラリ(主にSVG図面を操作するため)を書いていますが、2つの楕円の交点を効率的に計算する方法に迷っています。
各楕円は、次の変数(すべて浮動小数点数)によって定義されます。
c: center point (x, y)
hradius: "horizontal" radius
vradius: "vertical" radius
phi: rotation from coordinate system's x-axis to ellipse's horizontal axis
楕円が同一である場合を無視すると、0から4の交点が存在する可能性があります(交点なし、接線、部分的に重なり合う、部分的に重なり合う、内部的に接する、完全に重なる)。
私はいくつかの潜在的な解決策を見つけました:
- SymPyジオメトリモジュール-これは基本的に、楕円方程式をSymPyのソルバーにプラグインするだけです。ソルバーがなくても、これが理にかなっているかどうかはわかりません。(ちなみに、私は自分でロールする代わりにSymPyを使用したでしょうが、クレイジーなフロートを扱うときはひどく機能します)
- 楕円が円と交差する(衝突する)かどうかを検出する方法-これはおそらく2つの楕円に適合させることができますが、それを賢明なコードに変換する方法については少し曖昧です。
- どのように楕円から楕円への交差点ですか?-回答参照ライブラリ(CADEMIA)には優れたアルゴリズムがあるかもしれませんが、それがオープンソースであるかどうかさえわかりません。
- ウィキペディア:2つの円錐曲線の交差-このソリューションを理解するのに十分な線形代数の把握がありません。
交差点の計算方法について何か提案はありますか?速度(多くの交差点を計算する必要があるかもしれません)と優雅さが主要な基準です。コードは素晴らしいでしょうが、進むべき良い方向性でさえも役に立ちます。