Возможно определить эту плоскость.Но нет выбранного направления для построения сетки уникально.
Пусть мы выберем направление OY в качестве основы (потому что нормаль имеет нулевую Y-компоненту).
Итак, мы имеем:
Нормальный вектор N = (xx, 0, zz)
// Я переименовал значения, чтобы избежать путаницы с координатными переменными
Единица нормального вектора n = (nx, 0, nz)
, где
nx = xx / Sqrt(xx*xx+zz*zz)
nz = zz / Sqrt(xx*xx+zz*zz)
Базовая точка
B = (bx, 0, bz) = (xx - nx * L, 0, zz - nz * L)
Единичный базовый вектор в плоскости
dy = (0, 1, 0)
Другой базовый вектор
dc = dy x n //vector product
= (-bz, 0, bx)
Теперь можно генерировать сетку, используя целочисленные индексы i, j
в диапазонах (-W/2..W/2)
и (-H/2.. H/2)
.Координаты узлов сетки:
x(i, j) = bx - j * bz
y(i, j) = 0 + i
z(i, j) = bz + j * bx