var myarray=[
  '0000000000000000000000000000000000000000000000000000',
  '0000000000000000010000000000000000000000000000000000',
  '0000000000000000100000000000000000000000000000000000',
  '0000000000000001000000000000000000000000000000000000',
  '0000000000000010000000000000000000000000000000000000',
  '0000000000000100000000000000000000000000000000000000',
  '0000000000001000000000000000000000000000000000000000',
  '0000000000010000000000000000000000000000000000000000',
  '0000000000100000000000000000000000000000000000000000',
  '0000000001000000000000000000000000000000000000000000',
  '0000000010000000000000000000000000000000000000000000',
  '0000000100000000000000000000000000000000000000000000',
  '0000001000000000000000000000000000000000000000000000',
  '0000000000000000000000000000000000000000000000000000',
]

我有一个像上面的数组,包括一个具有特定旋转角度的直线( 45° in this case ),我知道线的所有点,因为我有一个数组,其中包括所有坐标为线的点( '1' -characters) .

var positions=[
  [6,12],
  [7,11],
  [8,10],
  [9,9],
  [10,8],
  [11,7],
  [12,6],
  [13,5],
  [14,4],
  [15,3],
  [16,2],
  [17,1],   
]

我也知道线旋转角度:

var angle=45

我想得到的是绘制线的特定坐标( position array )a normal ,以便我的数组看起来像这样:

(用 '2's 符号化的法线有一个 right angle 到我的起始行用 '1's 表示,并且在这种情况下必须得到一个特定的长度 ~16

var starting_coordinate=[11,7]
var myarray=[
  '0000000000000000000000000000000000000000000000000000',
  '0000000000000000010000000000000000000000000000000000',
  '0000000000000000100000000000000000000000000000000000',
  '0000020000000001000000000000000000000000000000000000',
  '0000002200000010000000000000000000000000000000000000',
  '0000000220000100000000000000000000000000000000000000',
  '0000000002201000000000000000000000000000000000000000',
  '0000000000212000000000000000000000000000000000000000',
  '0000000000100220000000000000000000000000000000000000',
  '0000000001000002200000000000000000000000000000000000',
  '0000000010000000022000000000000000000000000000000000',
  '0000000100000000000200000000000000000000000000000000',
  '0000001000000000000000000000000000000000000000000000',
  '0000000000000000000000000000000000000000000000000000',
]

如何计算 line of '2's 的位置并将它们绘制到矩阵中?

var myarray=[
      '0000000000000000000000000000000000000000000000000000',
      '0000000000000000010000000000000000000000000000000000',
      '0000000000000000100000000000000000000000000000000000',
      '0000000000000001000000000000000000000000000000000000',
      '0000000000000010000000000000000000000000000000000000',
      '0000000000000100000000000000000000000000000000000000',
      '0000000000001000000000000000000000000000000000000000',
      '0000000000010000000000000000000000000000000000000000',
      '0000000000100000000000000000000000000000000000000000',
      '0000000001000000000000000000000000000000000000000000',
      '0000000010000000000000000000000000000000000000000000',
      '0000000100000000000000000000000000000000000000000000',
      '0000001000000000000000000000000000000000000000000000',
      '0000000000000000000000000000000000000000000000000000',
]


function draw_tangente(array, angle, length, x, y) {
 var radians=(Math.PI / 180) * angle
 for (var i=0; i<length; i++) {
  var new_x = Math.round(Math.cos(radians)*(x-i))
  var new_y = Math.round(Math.sin(radians)*(y-i))
  try {
    var point = array[new_y].split('');point[new_x] = '2';array[new_y] = point.toString().replace(/,/g,'');
  } catch(e) {}
  }
 return array;
}


console.log(draw_tangente(myarray, 45, 10, 11, 7).join('\n'));