これはおそらくプログラミングよりも数学の問題ですが、2 つの楕円体の交点は凸形状であると考えているため、このような比較的適切に動作するオブジェクトを処理するためにモンテカルロ以外のアプローチを試すことができるかもしれません。
まず、(どういうわけか) 両方の楕円体の内側に点を見つける必要があります。
次に、その点を中心に、両方の楕円体を完全に含むのに十分な大きさの立方体を作成します。3 つの軸すべてに沿って立方体を 8 つの同じサイズのサブ立方体に分割します (八分木を作成する最初のステップ)。
この後、サブキューブに再帰を適用します。両方の楕円体の内側にあるキューブ コーナーとそうでないキューブ コーナーがある場合は、キューブを再度分割します。また、立方体面の一部の領域が両方の楕円体の内側にあり、他の領域がそうでない場合は、再度細分化します。
必要な再帰の深さまで繰り返します。分割された立方体の体積を合計することで、計算エラーを追跡できます。
ここでの難しい操作は、「立方体面の一部の領域が両方の楕円体の内側にある場合」を解決することです。楕円体と平面の交点は楕円です。6 つの立方体面のそれぞれを検査するには、それらを楕円体と交差させ、残りの楕円体が両方とも立方体面と重なっている場合は互いに交差させる必要があります。幸いなことに、2D 楕円-楕円オーバーラップ テストでは、参照をより簡単に見つけることができます...
モンテカルロでは、O(2^n) の労力で n ビットの精度が得られるため、たとえば 24 ビットでは 1670 万サンプルが必要になります。このような分割統治法を使用して形状面に注目すると、24 ビットで約 65,000 である O(2^(n*2/3)) サンプルのみが必要になるはずです。
また、最初の再帰ステップで超過分がすぐに削除されるため、最初のバウンディング ボックス サイズに関する懸念は無関係になります。