C++判断空间两直线相交?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 23:38:46
C++判断空间两直线相交?
已经知道直线的方向矢量
已经知道直线的方向矢量
条件应该还有每条直线上任意一点的坐标.
设直线的方向向量为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| * vh/|v||h| = vh/|h|,这个结果算完,看它等不等于0就知道两直线是否相交
设直线的方向向量为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| * vh/|v||h| = vh/|h|,这个结果算完,看它等不等于0就知道两直线是否相交