Как узнать положение точки на повернутой сетке с квадратными ячейками одинакового размера - PullRequest
0 голосов
/ 04 августа 2020

Дана сетка, наклоненная под углом θ (theta) с квадратными ячейками одинакового размера с индексами 00, 01, 02, ..., 55 (где первый di git - индекс x, а второй - y index, например 00 означает ячейку на пересечении строки 0 и столбца 0) и точку p(x,y), как мы можем узнать, в какой ячейке сетки находится точка l ie, не проверяя все ячейки?

Например, на изображении ниже точка p находится в ячейке с индексом 23.

enter image description here

I found one answer at Проверка, находится ли точка внутри повернутого прямоугольника , в котором объясняется, как чтобы определить, находится ли точка внутри повернутого прямоугольника, но при таком подходе мне нужно проверить все ячейки сетки.

1 Ответ

2 голосов
/ 04 августа 2020

Возможно, самый простой способ - повернуть точку на тот же угол (со знаком минус) и проверить новые координаты в координатной сетке

nx = x * cos(theta) - y * sin(theta)
ny = x * sin(theta) + y * cos(theta)
row = (int) (ny / cellsize)
col = (int) (nx / cellsize)
...