ベクトルの基底変換を使った円運動。
/*
三角関数を用いた運動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;
}
下記のサイトを参考にしました。高校で数学を学んだ記憶があまりないのですが、「座標系の変換」を自分なりに考えて利用しました(見当違いかもしれません)。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。