ほぼ球形である必要がある形状の表面を表す点のコレクションがあり、この形状内に他の特定の点があるかどうかを判断する方法が必要です。以前は形状を正確な球体として近似していましたが、これは不正確すぎることが判明したため、より正確な方法が必要です。完全な精度よりも単純さと速度が優先され、適切な近似値で十分です。
点群を 3D メッシュに変換する手法を見つけましたが、見つけたもののほとんどは非常に複雑で、できるだけ単純なものを探しています。
何か案は?
ほぼ球形である必要がある形状の表面を表す点のコレクションがあり、この形状内に他の特定の点があるかどうかを判断する方法が必要です。以前は形状を正確な球体として近似していましたが、これは不正確すぎることが判明したため、より正確な方法が必要です。完全な精度よりも単純さと速度が優先され、適切な近似値で十分です。
点群を 3D メッシュに変換する手法を見つけましたが、見つけたもののほとんどは非常に複雑で、できるだけ単純なものを探しています。
何か案は?
雲の重心を計算し、その座標をその重心を原点とする極座標系に変換するとどうなるでしょうか。
次に、調べたい点を同じ座標系に変換します。
サーフェスが Delaunay 三角形分割で表現できると仮定して、調査している点からの角度の差が最も小さい 3 つの点を特定します。
調べている点をそれらの 3 点によって決定される三角形に投影し、投影された点の重心からの距離が実際の点の距離よりも大きいかどうかを確認します。
基本的に、凸包の三角形メッシュを作成していますが、必要に応じて一度に 1 つの三角形を作成します。実行速度が本当に重要な場合は、結果として得られる三角形をキャッシュすることができます。
また、Steven Sudit は、この道をたどる場合に推奨する便利な最適化を提案しています。
Bill Carey の方法は正しい方向に進んでいると思いますが、可能な最適化を提案したいと思います。
形状はほぼ球状であるため、その形状に囲まれた球と、その境界にある球の半径を事前に計算できます。このように、ポイントの距離が小さい方の球内にある場合は確定ヒットであり、外側の球の外側にある場合は確定ミスです。
これにより、簡単なケースを非常に迅速に解決できるはずです。より難しいものについては、キャリーの方法が引き継がれます。