forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3

by arere forked from forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3 (diff: 149)
♥0 | Line 91 | Modified 2009-12-12 21:03:23 | MIT License
play

ActionScript3 source code

/**
 * Copyright arere ( http://wonderfl.net/user/arere )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ecbG
 */

// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: RGBCube for AS3
// forked from kotobuki's forked from: RGBCube for AS3
// forked from kotobuki's RGBCube for AS3
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.filters.ConvolutionFilter;
	
	import org.papervision3d.view.BasicView;
	//import org.papervision3d.scenes.Scene3D;
	//import org.papervision3d.cameras.Camera3D;
	//import org.papervision3d.view.Viewport3D;
	//import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.BitmapAssetMaterial;
	
	import funnel.*;
	
	[SWF(width = "640", height = "480", backgroundcolor = "#333333", framerate = "30",alpha = "0")]
	/**
	 * ...
	 * @author ...
	 */
	public class globe extends BasicView
	{
		//private var scene:Scene3D;
		//private var camera:Camera3D;
		//private var viewport:Viewport3D;
		//private var renderer:BasicRenderEngine;
		
		private var cameraType = "Target";
		private var stageW:Number;
		private var stageH:Number;
		private var vpX:Number;
		private var vpY:Number;
		
		//fio variables
		private var fioSystem:Fio;
		private var fio:IOModule;
		
		//acceralator xAxis AnaPin
		private var xAxisPin:Pin;
		
		//acceralator yAxis AnaPin
		private var yAxisPin:Pin;
		
		public function globe() {
			var config:Configuration = fio.FIRMATA;
			
			
			 // 必要ないアナログ入力をすべて出力にセットする
             // これによりデータの転送量が少なくなりレスポンスが良くなる
             // (ArduinoではA0、A1…はD14、D15に対応する)
			 config.setDigitalPinMode(17, OUT); //A3
			 config.setDigitalPinMode(18, OUT); //A4
			 config.setDigitalPinMode(19, OUT); //A5
			 config.setDigitalPinMode(20, OUT); //A6
			 config.setDigitalPinMode(21, OUT); //A7
			 fioSystem = new Fio([1], config);
			 fio = fioSystem.ioModule(1);
			 
			 xAxisPin = fio.analogPin(0);
			 yAxisPin = fio.analogPin(1);
			 
			 // 2つの軸のそれぞれにフィルタをセット
             // ・細かな変動を取り除くための移動平均フィルタ
             // ・-1Gから1Gまでの変化を-1から1までにスケーリングするためのフィルタ
			 xAxisPin.addFilter(new Convolution(Convolution.MOVING_AVERAGE));
			 xAxisPin.addFilter(Scaler(0.30, 0.70, -1, 1));
			 yAxisPin.addFilter(new Convolution(Convolution.MOVING_AVERAGE));
			 yAxisPin.addFilter(Scaler(0.30, 0.70, -1, 1));
			super(0, 0, true, true, cameraType);
			//viewportW, viewportH, scaleToStage, interactive, cameraType
			init();
		}
		
		private function init():void {
			setStage();
			//setScene();
			setCamera();
			setDO3D();
			
			addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		}
		
		//stage init
		private function setStage():void {
			stage.quality = StageQuality.MEDIUM;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			stageW = stage.stageWidth;
			stageH = stage.stageHeight;
			vpX = stageW / 2;
			vpY = stageH / 2;
		}
		
		//Scene init
		/*private function setScene():void {
			renderer = new BasicRenderEngine();
			scene = new Scene3D();
			viewport = new Viewport3D(0, 0, true, true);
			//viewportWidth, viewportHeight, autoScaleToStage, interactive,autoClipping, autoCulling
			addChild(viewport);
		}*/
		
		//Camera init
		private function setCamera():void {
			//camera = new Camera3D();
			camera.x = 0;
			camera.y = 100;
			camera.z = -600;
			camera.zoom = 30;
			camera.focus = 30;
			camera.target = DisplayObject3D.ZERO;
		}
		
		//DisplayObject3D init
		private function setDO3D():void {
			var material:BitmapAssetMaterial = new BitmapAssetMaterial("Image", true);
			material.oneSide = false;
			material.smooth = true;
			var sphere:Sphere = new Sphere(material, 200, 24, 24);
			scene.addChild(sphere);
		}
		
		//Mouse Event 
		private function onEnterFrameHandler(event:Event):void {
			var angleX:Number = (mouseX - vpX) * 0.001;
			var angleY:Number = (mouseY - vpY) * 0.001;
			moveCameraX(angleX);
			moveCameraY(angleY);
			renderer.renderScene(scene, camera, viewport);
		}
		
		private function moveCameraX(angleX:Number):void {
			var cosX:Number = Math.cos(angleX);
			var sinX:Number = Math.sin(angleX);
			camera.x = camera.x * cosX - camera.z * sinX;
		}
		
		private function moveCameraY(angleY:Number):void {
			var cosY:Number = Math.cos(angleY);
			var sinY:Number = Math.sin(angleY);
			camera.y = camera.y * cosY - camera.z * sinY;
		}
	}
	
}