Flash(ActionScript3.0)とFlex3(MXML)によるWebコンテンツ制作・AIRアプリケーション製作・RIA開発。
アークサインは、比率を与えると角度(ラジアン)が得られる。
例)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
もうひとつのアークタンジェントを使ってマウスに向かって回転する矢印を表現する。
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();
}
}
}
描画をこんな感じにクラス化してデザインしておけば、いつでもこの形を実現できる。今回は簡単な形状だけど複雑なものを描画するときにはクラス化は後々便利。複雑形=簡単形の集合体。
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;
}
}
}
【ダウンロード】