我有一个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
答案 0 :(得分:1)
这与发布的示例相比并不完美,但它非常接近。我使阵列更大一点,以获得更好的倾斜分辨率。只需使用size
和deg
变量即可获得所需的输出。
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);
}