2010-04-04 74 views
2

我寫了一個旋轉功能,但我還不滿意嗎:重構JavaScript數組旋轉功能

var pixels=['011','110','000']; 
var result=new Array(); 
result=['000','000','000']; 
var r = {x:1,y:1}; //rotating point 
var clock = true; //clock or counter-clock rotation 


for (y=0; y<(pixels.length); y++){ 
    for (x=0; x<(pixels.length); x++){ 
    var newx=0,newy=0; 
    if (clock){ 
     if (x< r.x && y< r.y) {newx=x+2;newy=y ;}//top left 
     if (x==r.x && y< r.y) {newx=x+1;newy=y+1;}//top 
     if (x> r.x && y< r.y) {newx=x ;newy=y+2;}//top right 
     if (x< r.x && y==r.y) {newx=x+1;newy=y-1;}//left 
     if (x==r.x && y==r.y) {newx=x ;newy=y ;}//center 
     if (x> r.x && y==r.y) {newx=x-1;newy=y+1;}//right 
     if (x< r.x && y> r.y) {newx=x ;newy=y-2;}//bottom left 
     if (x==r.x && y> r.y) {newx=x-1;newy=y-1;}//bottom 
     if (x> r.x && y> r.y) {newx=x-2;newy=y ;}//bottom right 
    } else { 
     if (x< r.x && y< r.y) {newx=x ;newy=y+2;}//top left 
     if (x==r.x && y< r.y) {newx=x-1;newy=y+1;}//top 
     if (x> r.x && y< r.y) {newx=x-2;newy=y ;}//top right 
     if (x< r.x && y==r.y) {newx=x+1;newy=y+1;}//left 
     if (x==r.x && y==r.y) {newx=x ;newy=y ;}//center 
     if (x> r.x && y==r.y) {newx=x-1;newy=y-1;}//right 
     if (x< r.x && y> r.y) {newx=x+2;newy=y ;}//bottom left 
     if (x==r.x && y> r.y) {newx=x+1;newy=y-1;}//bottom 
     if (x> r.x && y> r.y) {newx=x ;newy=y-2;}//bottom right 
    } 
    //inject(result,newx,newy,pixels[y][x]) 
    } 
} 

是否有人現在怎麼寫這個旋轉清潔代碼(時鐘和逆時鐘)功能?

+0

「r」變量與'result'是否相同?如果不是,它是未定義的。 – 2010-04-04 17:29:28

+0

謝謝你的評論,我忘了提及r是支點(現在已經糾正) – ideotop 2010-04-04 17:39:06

回答