Aha! Возможно, только что решил это сам.
Чтобы получить уравнение плоскости, я поворачиваю вектор нормали (0,0,1), используя матрицы вращения, а затем нахожу D. Если я также вращаю следующие векторы:
(1,0,0) //step in the x direction of our 2D array
и
(0,1,0) //step in the y direction of our 2D array
У меня будут градиенты, которые обозначают, насколько мои координаты в x, y, z должны измениться, прежде чем я перейду к следующему столбцу в моем массиве или к следующей строке.
Я макетирую это как можно скорее и отмечу это как ответ, если это работает
РЕДАКТИРОВАТЬ: Хорошо, небольшое изменение, когда я вращаю свои векторы, я должен также вращать точку в трехмерном пространстве, которая представляет координаты XYZ x = 0, y = 0, z = 0 (хотя я вращаюсь вокруг центр структуры, так что на самом деле это -sizex / 2, -sizey / 2, -sizez / 2, где size это размер данных, а затем я просто добавляю size / 2 к каждой координате после поворотов, чтобы перевести их обратно где это должно быть).
Теперь, когда у меня есть изменение градиента в 3D, когда я увеличиваю координату x моего 2D-массива, и изменение градиента, когда я увеличиваю координату y, я могу просто перебрать все возможные координаты x и y (результирующий массив будет 50x50 для массива 50x50x50, я не уверен, что это будет для нерегулярных размеров, которые мне, в конечном счете, нужно будет обработать) в моем 2D-массиве и вычислить результирующие трехмерные координаты на моей плоскости в данных. Мое значение угла поворота служит отправной точкой. Ура!
Просто нужно разработать хороший тест для этого, охватывающий все углы, и тогда я одобрю это как ответ