C++判断空间两直线相交?
发布网友
发布时间:2022-09-14 02:56
我来回答
共1个回答
热心网友
时间:2024-12-01 08:36
条件应该还有每条直线上任意一点的坐标。
设直线的方向向量为v1(x1,y1,z1) 和v2(x2,y2,z2)
两条直线的距离为0就是相交,要求两条直线的距离,先求出它们的公共垂线方向(向量h),再求出两条直线各任取一点作连线,所得连线在公垂线上的投影长就是距离。
(1)公垂线方向向量用叉乘公式(根据解析几何知识,a叉乘b同时垂直于a和b)h = v1 x v2 =(y1z2-y2z1,z1x2-x1z2,x1y2-x2y1)
(2)已知两直线各取一点所作连线向量是v,根据三角函数知识,v在h上的投影长 = |v|*cos<v,h> = |v| * vh/|v||h| = vh/|h|,这个结果算完,看它等不等于0就知道两直线是否相交