空間の基準点の周りに一定間隔のドアの円を作成する必要があります。プログラムを実行するたびに、異なる数のアイテムが円の中に表示されるため、増加したアイテム数に対応するために自動的に再スケーリングされます。これはプログラミングの質問というよりは数学の質問の方が多いことは知っていますが、困惑しています。次のコードは私が得たものと同じくらい近いです:
block->setPosition(core::vector3df(sin(segdeg*itemnumber)*radius+referencepoint.X,
0,
cos(segdeg*itemnumber)*radius+referencepoint.Z));
ブロックはオブジェクトであり、このコードはアイテムごとに実行されます。segdegは360/アイテムの数です。つまり、SEGmentDEGreesです。半径は、アイテムが必要な中心点からどれだけ離れているかです。Itemnumberは、問題のアイテムのインデックスです-それがどの番号のアイテムであるか。
何らかの理由で、このコードは各ドアをかなり閉じますが、それでも約10〜15度ずれています。(ただし、最初のドアは常にスポットになっています)ただし、アイテムはすべて中心点から正しい距離にあります。これは本当に明白な答えの質問だと確信していますが、私は何時間もそれを解決することができず、私は私のお尻をグーグルで検索しました。
誰かが私のアルゴリズムを修正できますか?