« 等間隔のカクカク渦巻き(2) | メイン | 三角比相互の関係 »
2007年8月10日
[as2] 等間隔のカクカク渦巻き(3)
何がしたかったかというと。
もっとスマートにならんかな・・・
import flash.geom.Point;
var result = createOrderMatrix( 9 , 9 );
for(var i=0;i<result.length;i++){
trace( result[i] );
}
function createOrderMatrix( xlength:Number , ylength:Number ):Array
{
var p:Point = new Point( 0 , 0 );
var totalLength = xlength*ylength;
var matrix = new Array( ylength );
for(var i=0;i<ylength;i++){
matrix[i] = new Array( xlength );
}
var xh = Math.floor(xlength/2);
var yh = Math.floor(ylength/2);
var xflag = true;
var yflag = false;
var xm:Number, ym:Number, nx:Number, ny:Number;
xm = ym = nx = ny = 1;
matrix[yh][xh] = 0;
for(var i=1;i<totalLength;i++)
{
if( xflag ){
p.x += xm/Math.abs(xm);
if( nx == p.x ){
xm = -(Math.abs(xm)/xm)*(Math.abs(xm)+1);
nx += xm;
yflag = true; xflag = false;
}
}
else if( yflag ){
p.y += ym/Math.abs(ym);
if( ny == p.y ){
ym = -(Math.abs(ym)/ym)*(Math.abs(ym)+1);
ny += ym;
yflag = false; xflag = true;
}
}
if( p.x+xh >= 0 && p.x+xh < xlength &&
p.y+yh >= 0 && p.y+yh < ylength ){
matrix[p.y+yh][p.x+xh] = i;
} else {
i--;
}
}
return matrix;
}
出力結果
72,73,74,75,76,77,78,79,80 71,42,43,44,45,46,47,48,49 70,41,20,21,22,23,24,25,50 69,40,19,6,7,8,9,26,51 68,39,18,5,0,1,10,27,52 67,38,17,4,3,2,11,28,53 66,37,16,15,14,13,12,29,54 65,36,35,34,33,32,31,30,55 64,63,62,61,60,59,58,57,56渦巻き配列
もっとスマートにならんかな・・・
トラックバック(0)
このブログ記事を参照しているブログ一覧: 等間隔のカクカク渦巻き(3)
このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/426

コメントする