Matriz cartesiana

Neste desafio, crie uma matriz que simule como uma série de pontos é posicionada em uma parte do plano cartesiano.

São fornecidos dois objetos como parâmetros:

  • dim contém as dimensões da matriz regular a ser criada:

    • A propriedade h é a altura, ou o número total de linhas.
    • A propriedade w é a largura, ou o número total de colunas.
  • cnt contém as coordenadas do centro do plano cartesiano:

    • A propriedade r é a linha (indexada a partir de 0).
    • A propriedade c é a coluna (indexada a partir de 0).

Você deve implementar uma função que retorne uma matriz (com o tamanho definido por dim), com cada "célula" sendo um array que contém as coordenadas [x, y] relativas ao ponto central fornecido (considerando, assim, as células como pontos no plano cartesiano).

Exemplos

cartesianMatrix({h: 3, w: 4}, {r: 1, c: 1}) ➞ [
  [[-1, 1], [0, 1], [1, 1], [2, 1]],
  [[-1, 0], [0, 0], [1, 0], [2, 0]],
  [[-1, -1], [0, -1], [1, -1], [2, -1]]
]

cartesianMatrix({h: 4, w: 3}, {r: 0, c: 1}) ➞ [
  [[-1, 0], [0, 0], [1, 0]],
  [[-1, -1], [0, -1], [1, -1]],
  [[-1, -2], [0, -2], [1, -2]],
  [[-1, -3], [0, -3], [1, -3]]
]

cartesianMatrix({h: 2, w: 4}, {r: 0, c: 0}) ➞ [
  [[0, 0], [1, 0], [2, 0], [3, 0]],
  [[0, -1], [1, -1], [2, -1], [3, -1]]
]

Notas

  • As coordenadas devem ser retornadas na ordem [x-axis, y-axis].
  • As coordenadas do ponto central (ou origem) são sempre [0, 0]. A origem sempre estará incluída na matriz.
  • Os pontos posicionados à direita ou acima da origem têm valores positivos (ou seja, [1, 2] significa 1 célula à direita e 2 células acima da origem).
  • Os pontos posicionados à esquerda ou abaixo da origem têm valores negativos (ou seja, [-2, -1] significa 2 células à esquerda e 1 célula para baixo da origem).