我有一个二维矩阵 我必须对 Angular 填充它,就像液体一样。
-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
最佳答案
这对于发布的示例来说并不十分完美,但已经非常接近了。我将阵列做得更大一些,以获得更好的倾斜分辨率。只需使用 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);
}
关于javascript - 基于旋转填充二维数组(矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732201/