AIR

三角関数 アークサイン アークコサイン アークタンジェント

アークサイン

アークサインは、比率を与えると角度(ラジアン)が得られる。

例)0.5 のアークサイン(30 度のサイン)

0.523 = Math.asin(0.5)

これを度に変換↓

30 = Math.asin(0.5) * 180 / Math.PI


アークコサイン

アークコサインは、比率を与えると角度(ラジアン)が得られる。

例)0.865 のアークコサイン(30 度のコサイン)

0.523 = Math.acos(0.865)

これを度に変換↓

30 = Math.acos(0.865) * 180 / Math.PI


アークタンジェント

アークタンジェントは、対辺と隣辺の比率を与えると角度(ラジアン)が得られる。

例)0.577 のアークタンジェント(30 度のタンジェント)

0.523 = Math.atan(0.577)

これを度に変換↓

30 = Math.atan(0.577) * 180 / Math.PI


もうひとつのアークタンジェント

例)0.577 のアークタンジェント(30 度のタンジェント)

0.523 = Math.atan2(1, 1.73) = Math.atan2(対辺, 隣辺)

これを度に変換↓

30 = Math.atan2(1, 1.73) * 180 / Math.PI


もうひとつのアークタンジェントを使ってマウスに向かって回転する矢印を表現する。


Sprite クラスの拡張で矢印スプライトを作成する

Arrow.as

package
{
	import flash.display.Sprite;
	
	public class Arrow extends Sprite
	{
		public function Arrow()
		{
			init();
		}
		public function init():void
		{
			graphics.lineStyle(1, 0, 1);
			graphics.beginFill(0xff0000);
			graphics.moveTo(-50, -25);
			graphics.lineTo(0, -25);
			graphics.lineTo(0, -50);
			graphics.lineTo(50, 0);
			graphics.lineTo(0, 50);
			graphics.lineTo(0, 25);
			graphics.lineTo(-50, 25);
			graphics.lineTo(-50, -25);
			graphics.endFill();
		}
	}
}

描画をこんな感じにクラス化してデザインしておけば、いつでもこの形を実現できる。今回は簡単な形状だけど複雑なものを描画するときにはクラス化は後々便利。複雑形=簡単形の集合体。


Math.atan2(dy, dx)

RotateToMouse.as

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	
	public class RotateToMouse extends Sprite
	{
		private var arrow:Arrow;
		
		public function RotateToMouse()
		{
			init();
		}
		private function init():void
		{
			arrow = new Arrow();
			addChild(arrow);
			arrow.x = stage.stageWidth / 2;
			arrow.y = stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		public function onEnterFrame(event:Event):void
		{
			var dx:Number = mouseX - arrow.x;
			var dy:Number = mouseY - arrow.y;
			//var radians:Number = Math.atan(dy / dx);
			var radians:Number = Math.atan2(dy, dx);
			arrow.rotation = radians * 180 / Math.PI;
		}
	}
}








Get Adobe Flash player






ダウンロード

コメント投稿

Get Adobe Flash player

トラックバック

Get Adobe Flash player