2

私は C++ を始めており、2 つの球体を互いに相互作用させる方法を研究しています。私が見つけたものの多くは、非常に複雑であるか、実際の数式でした。球体のいずれかの面が別の面と接触したことを認識する関数を作成する、もっと単純な方法はありますか? 私の仕事をお願いしているわけではありませんが、より理解を深めるのに役立つ、ある種のきれいなビジュアル、疑似コード、またはコードスニペットを本当に感謝しています. それとも、私が見つけられなかったいくつかのリンクですか?

ありがとう!

4

2 に答える 2

2

球の中心間の距離が半径の合計より小さいかどうかを確認します。

class Sphere {
public:
    double centerX, centerY, centerZ, radius;
    // .... 
};

double distanceBetween( const Sphere& a, const Sphere& b ) {
    return sqrt( pow( a.centerX - b.centerX, 2 ) + pow( a.centerY - b.centerY, 2 ) + pow( a.centerZ - b.centerZ, 2 ) );
}

bool areColliding( const Sphere& a, const Sphere& b ) {
    return distanceBetween( a, b ) < ( a.radius + b.radius );
}
于 2015-03-11T02:21:28.283 に答える
0

この投稿では、2 つの球体がどのように相互に作用するかについて説明しています。この問題を解決するには、複雑な計算を処理する必要があることに注意してください。これらの説明を読むことで、数学が何をしているのかをよりよく理解できることを願っています。私は過去に、数学を掘り下げる前に、一般的に言えば問題を解決する方法を試して視覚化し、理解するのが最善であることを発見しました.

于 2013-03-13T05:40:01.733 に答える