La solution est aussi simple que vous partiez des équations planes ou seulement des matrices de valeurs. Avec les équations planes, vous avez deux équations dans trois inconnues. Résolvez cela en une équation dans deux inconnues (X et Y), et vous avez votre ligne d'intersection, à partir de laquelle vous pouvez générer n'importe quel ensemble désiré de points d'intersection.
Avec les matrices, vous connaissez la valeur z correspondante: zéro. Choisissez votre méthode de recherche préférée pour trouver les indices dans la matrice originale Z
à laquelle la valeur est zéro. Vous obtenez le point d'intersection défini en les utilisant pour indexer dans les matrices X
et Y
. (Et si les valeurs dans Z
ne touchent jamais exactement zéro, tout ce que vous devez faire est d'interpoler.)
Les raisons de la simplicité sont que (a) vos objets sont des plans, et (b) l'un d'entre eux est parallèle à un vecteur de base pour l'espace. Relâcher la contrainte (b) n'ajoute que la complexité de devoir soustraire les deux plans les uns des autres pour permettre à (b) de se maintenir à nouveau. (Ceci n'est utile que si vous n'avez pas les équations planes, si vous le faites, vous pouvez appliquer la solution donnée pour deux plans, quelle que soit l'orientation.)
Si (a) est relaxé, le problème devient non trivial - il peut être très intensif en calcul pour déterminer l'espace d'intersection des variétés arbitraires, comme l'attestera la vaste littérature sur la détection des collisions dans les jeux et la robotique.
Addendum: This link appears to cover the idea more explicitly, mais il ne suppose pas que les surfaces sont des plans, et contient donc une complexité supplémentaire dont vous n'avez pas besoin ici.
Avez-vous réellement l'équation que vous avez utilisée pour générer ces points, ou avez-vous seulement les matrices disponibles? – rayryeng