Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "=?ISO-2022-JP?B?GyRCQ1NMbhsoSiAbJEJONjwjGyhK?=" Newsgroups: playstation.ny.program.questions Subject: =?ISO-2022-JP?B?GyRCQ081ZRsoSi0bJEIyUEAxJWIlRyVrGyhK?= Date: 5 Apr 1997 06:29:09 GMT Organization: PlayStation Net Yarouze Lines: 36 Message-ID: <01bc418a$9230df60$LocalHost@HOST.asahi-net.or.jp> NNTP-Posting-Host: 202.213.132.29 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 8bit X-Newsreader: Microsoft Internet News 4.70.1157 池野です. beginnerの方に質問してしまった, 太陽の周りを地球と火星が独立に回転させるというプログラムですが. とりあえずは実現しました.以下がプログラムの概要です, foo(int rotJoint,int rotAxis) { #define GETA 4096 // 計算用のゲタ VECTOR localPos; int cosR,sinR; cosR = cos(rotJoint * 2 * 3.1415926536 / 4096.0) * GETA; sinR = sin(rotJoint * 2 * 3.1415926536 / 4096.0) * GETA; switch(rotAxis) { case 0: // X軸の回転 (void)RotMatrixX(rotJoint, &boxObj.crd.coord); localPos.vx = boxObj.pos.vx; localPos.vy = (boxObj.pos.vy * cosR - boxObj.pos.vz * sinR) / GETA; localPos.vz = (boxObj.pos.vy * sinR + boxObj.pos.vz * cosR) / GETA; break; // case 1(Y軸),2(Z軸) も同様に処理 } (void)TransMatrix(&boxObj.crd.coord, &localPos); boxObj.crd.flg = 0; } やってることは,平行移動するベクトルに公転分の回転を掛けてるだけです. ん〜,も少しマシな処理方法があると思んだけど...(-_-; gi3r-ikn@asahi-net.or.jp 池野龍治