У меня есть две 3D-линии, которые лежат в одной плоскости. line1
определяется точкой (x1, y1, z1
) и ее вектором направления (a1, b1, c1
), а line2
определяется точкой (x2, y2, z2
) и ее вектором направления (a2, b2, c2
). Тогда параметрические уравнения для обеих линий имеют вид
x = x1 + a1*t; x = x2 + a2*s;
y = y1 + b1*t; y = y2 + b2*s;
z = z1 + c1*t; z = z2 + c2*s;
Если оба вектора направления отличны от нуля, мы можем легко определить местоположение узла пересечения, приравняв правую часть приведенных выше уравнений и решив t
и s
из любых двух из трех. Однако возможно, что не все a1 b1 c1 a2 b2 c2
отличны от нуля, поэтому я не могу решить эти уравнения одним и тем же способом. Моя текущая мысль состоит в том, чтобы решать эту проблему в каждом конкретном случае, например
case1: a1 = 0, others are nonzero
case2: a2 = 0, others are nonzero
case3: b1 = 0, others are nonzero
...
Однако в целом случаев так много, что реализация станет беспорядочной. Есть ли хорошие способы решить эту проблему? Любая ссылка? Большое спасибо!
x1
,y1
, ...,c2
и так далее - person Utkan Gezer   schedule 21.03.2014