Решение одинаково просто, начинаете ли вы с уравнений плоскости или только с матрицами значений.
С уравнениями плоскости вы имеете два уравнения в трех неизвестных. Разрешите это одному уравнению с двумя неизвестными (X и Y), и у вас есть линия пересечения, из которой вы можете сгенерировать любой желаемый набор точек пересечения.
С матрицами вы знаете соответствующее значение z - оно равно нулю. Выберите свой любимый метод поиска, чтобы найти индексы в исходной матрице Z
, в которой значение равно нулю. Вы получаете точку пересечения, используя их для индексации в матрицах X
и Y
. (И если значения в Z
никогда не достигают нуля, все, что вам нужно сделать, это интерполяция.)
Причины простоты в том, что (а) ваши объекты являются плоскостями и (b) один из них параллелен базисному вектору пространства.
Устранение ограничения (b) добавляет только сложность вычитания двух плоскостей друг от друга, чтобы позволить (b) снова удерживать. (Это полезно только в том случае, если у вас нет уравнений плоскости, и если вы это сделаете, вы можете применить решение, заданное для любых двух плоскостей, независимо от ориентации.)
Если (а) ослаблена, становится нетривиальным - для определения пространства пересечений произвольных многообразий может быть достаточно вычислительно-интенсивным, как подтвердит обширная литература по обнаружению столкновений в играх и робототехнике.
Addendum: This link appears to cover the idea more explicitly, но он не предполагает, что поверхности являются плоскостями и поэтому содержит дополнительную сложность, которая вам здесь не нужна.
У вас есть уравнение, которое вы использовали для создания этих точек, или у вас есть только доступные матрицы? – rayryeng