Точки пересечения между 3d-сегментом и билинейной поверхностью - PullRequest
1 голос
/ 10 июля 2019

Учитывая отрезок, заданный 3d-точками A и B, и поверхность, заданную четырьмя углами P00, P01, P11, P10 (против часовой стрелки, P00 - левый нижний угол) и t значение, определенное в интервале 0.0 <= t <= 1.0 вдоль сегмента, где происходит пересечение, как я могу найти все возможные значения t?

В моем случае использования поверхность выровнена по оси, что означает:

P00.x == P10.x, P01.x == P11.x, P00.y == P01.y, P10.y == P11.y

Я попытался использовать определение параметрического сегмента:

x = (Bx - Ax)t + Ax
y = (By - Ay)t + Ay
z = (Bz - Az)t + Az

плюс определение поверхности:

P(x,y,z) = P(u,v) = (1-u)(1-v)P00 + (1-u)(v)P01 + (u)(1-v)P10 + (u)(v)P11

И попытайтесь выровнять их и решить для t, но не очень далеко упростили результат.

...