Papervision3Dで惑星の公転
Papervision3Dをお勉強するにあたって、どうせなら目標を設定しようかと。
それなりにPapervision3Dのサンプルを見てまわり、こういう表現に向いているだろうな、完成度が良く、拡張性もあったほうがいいな、といろいろと悩んだ結果、「宇宙」を表現しようかと思います。
今回はその一歩である、惑星の運動です。つまりは球体を自転させながら公転させます。
円運動を実装するとき、どうしてもサイン、コサインとか出てきて、数学アレルギーの人にとっては敬遠しがちですが、一度覚えてしまえば、関数化して置いておけばよいでしょう。
ActionScriptのコードは以下のとおりです。import部分は省いてあります。
public class Main extends BasicView{ private var sphere:Sphere; private var t:Number = 1; public function Main(){ var material:WireframeMaterial = new WireframeMaterial(0x0000FF); sphere = new Sphere(material, 100, 10, 10); scene.addChild(sphere); startRendering(); addEventListener(Event.ENTER_FRAME, mvSphere); } private function mvSphere(e:Event):void { t += 1; // 自転運動 sphere.rotationY = t * 5; // 公転運動 sphere.x = 500 * Math.sin(t / 100); sphere.z = 500 * Math.cos(t / 100); } }
変数tを基準にしていますが、自転運動は5のところで自転スピードを調整します。公転運動のところでは、500が中心からの距離、100が公転のスピードを調整します。
コメントする