三角関数 座標変換を用いた円運動 : ActionScript

Pocket

ベクトルの基底変換を使った円運動。


/*
三角関数を用いた運動5
行列による座標変換
*/
// クリップ作成オブジェクト
function CreateClip(degree, radius, centerX, centerY) {
	// 度数
	var degree = degree;
	// 半径
	var radius = radius;
	// 円中心
	var centerX = centerX;
	var centerY = centerY;
	// 弧度
	var radian = null;

	// 座標変換
	var changeCoordinate = function (base1, base2, coordinate,self) {
		self._x = base1[1]*coordinate[1]+base2[1]*coordinate[2];
		self._y = base1[2]*coordinate[1]+base2[2]*coordinate[2];
	};
	/* onEnterFrame */
	this.onEnterFrame = function() {
		radian = Math.PI/180*degree;
		// 座標
		var coordinate = new Array(2);
		coordinate[1] = centerX+radius*Math.cos(radian);
		coordinate[2] = centerY+radius*Math.sin(radian);
		// 基底
		var base1 = new Array(2);
		base1[1] = 1;
		base1[2] = 1/2;
		var base2 = new Array(2);
		base2[1] = -1/2;
		base2[2] = 1/2;
		changeCoordinate(base1, base2, coordinate,this);
		// 度数を増やす
		degree += 5;
	};
}
/* ムービークリップの作成, 配置 */
// 最初のクリップの配置角度
var deg = 0;
// クリップ配列
var clip = new Array();
// 配置する個数
var clipLength = 12;
// 配置する間隔
var space = 360/clipLength;
for (var i = 0; i<clipLength; i++) {
	// 角度,半径,中心のX座標,Y座標
	clip[i] = new CreateClip(deg, 50, 150, 150);
	attachMovie('clip', 'clip'+i, i, clip[i]);
	deg += space;
}

下記のサイトを参考にしました。高校で数学を学んだ記憶があまりないのですが、「座標系の変換」を自分なりに考えて利用しました(見当違いかもしれません)。

» 数学Cハイパーテキスト 行列って結局なんなの?

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。