根据旋转填充二维数组(矩阵)

Fill 2d array (matrix) based on rotation

我有一个二维矩阵 我得斜着填,像流体一样。

-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

这对于发布的示例来说不是很完美,但已经很接近了。我使阵列更大一些以获得更好的倾斜分辨率。只需使用 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);    
}