根据旋转填充2d数组(矩阵)

时间:2016-01-11 22:19:16

标签: javascript arrays matrix rotation

我有一个2d矩阵 我必须对角地填充它,就像流体一样。

-45到45度之间的任意旋转。 (例如32度)

有些情况:

0度

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1

-45度

0 0 0 0 0 0
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1

45度

0 0 0 0 0 0
0 0 0 0 0 1
0 0 0 0 1 1
0 0 1 1 1 1
0 1 1 1 1 1
1 1 1 1 1 1

1 个答案:

答案 0 :(得分:1)

这与发布的示例相比并不完美,但它非常接近。我使阵列更大一点,以获得更好的倾斜分辨率。只需使用sizedeg变量即可获得所需的输出。

var arr = [];
var size = 10;
var deg = -45;

for(var i = 0; i < size; i++){
    arr.push([]);
    for(var j = 0; j < size; j++){
        arr[i].push(0);
    }
}

var leftFill = .5 - (deg / 90);
var rightFill = .5 + (deg / 90);
var distanceToCover = rightFill - leftFill;

for(var i = 0; i < arr.length; i++){
    for(var j = 0; j < arr[i].length; j++){
        var xHeight = (leftFill + ((j / (arr[i].length - 1)) * distanceToCover));
        var xPos = (arr.length - i) / size;
        if(xPos <= xHeight) arr[i][j] = 1; 
    }
}

for(var i = 0; i < arr.length; i++){
    var logStr = i + ': ';
    for(var j = 0; j < arr[i].length; j++){
        logStr += (arr[i][j] + ' ');
    }
    console.log(logStr);    
}