一种三维场景自动寻找线段交点的方法 【技术领域】
本发明涉及一种三维场景的应用, 特别是一种三维场景中寻找线段交点的方法。技术背景
在 3DMAX 中, 交叉点并不能够直接由软件得到, 即便是在同一平面中绘制的两条 交叉线也不能直接得到交叉点的位置坐标。 因此在一些需要获取线段交叉点坐标的应用中 就需要首先找到交叉点的位置坐标。发明内容
有鉴于此, 本发明的目的在于提供一种能够快速、 自动地判断两条线段是否相交 并确定交点坐标。
为了达到上述目的, 本发明提供一种三维场景自动寻找线段交点的方法, 其包 括:
两条相交线段 m 和 n, m 的两个端点三维坐标分别为 pA, pB, n 的两个端点三维坐 标分别为 pC, pD ;
将 pB 减 pA 得到矢量 a, 将 pD 减 pC 得矢量 b, 将 pC 减 pA 得矢量 c ;
叉乘矢量 a 和矢量 b 得到矢量 c1, 叉乘矢量 c 和矢量 b 得到矢量 c2 ;
点乘矢量 c1 和矢量 c2 得到标量 c3 ;
计算矢量 c1 的长度的平方得到标量 c4, 将标量 c3 除以标量 c4 得到标量 c5 ;
将矢量 a 乘以标量 c5 得到矢量 c6, 将矢量 c6 加上坐标点 pA 得到坐标 pI ;
所述坐标 pI 即为两条线段 m 和 n 的交点。
进一步地, 将 pA 减 pI 得到得到矢量 n1, 将 pB 减 pI 得到矢量 n2, 算出 n1 的法线 向量 n3, 算出 n2 的法线向量 n4, 计算 n3 和 n4 的点积 d ;
将 pC 减 pI 得到得到矢量 m1, 将 pD 减 pI 得到矢量 m2, 算出矢量 m1 的法线向量 m3, 算出矢量 m2 的法线向量 m4, 计算 m3 和 m4 的点积 d1 ; 和
判断 d 和 d1 的大小, 如果 d 和 d1 都等于 0 则两个线段相交, 交点坐标就是 pI, 否 则两个线段不相交。
本发三维场景自动铺路的方法, 能自动找到两条线段的交点, 对于两条无法判断 是否相交的线段也可以获知其是否相交并获得交点。 附图说明
图 1 是本发明一种三维场景自动寻找线段交点的方法一个具体的实施例的流程图。 具体实施方式
请参看图 1 所示, 本发明提供了一种三维场景自动寻找线段交点的方法, 其包括 :步骤 101, 两条相交线段 m 和 n, m 的两个端点三维坐标分别为 pA, pB, n 的两个端 点三维坐标分别为 pC, pD。
步骤 102, 将 pB 减 pA 得到矢量 a, 将 pD 减 pC 得矢量 b, 将 pC 减 pA 得矢量 c。
步骤 103, 叉乘矢量 a 和矢量 b 得到矢量 c1, 叉乘矢量 c 和矢量 b 得到矢量 c2。
步骤 104, 点乘矢量 c1 和矢量 c2 得到标量 c3。
步骤 105, 计算矢量 c1 的长度的平方得到标量 c4, 将标量 c3 除以标量 c4 得到标 量 c5。
步骤 106, 将矢量 a 乘以标量 c5 得到矢量 c6, 将矢量 c6 加上坐标点 pA 得到交点 坐标 pI。
对于两条未知是否相交的线段 m 和 n, 所述自动寻找线段交点的方法进一步包括 :
步骤 107, 将 pA 减 pI 得到得到矢量 n1, 将 pB 减 pI 得到矢量 n2, 算出 n1 的法线向 量 n3, 算出 n2 的法线向量 n4, 计算 n3 和 n4 的点积 d。
步骤 108, 将 pC 减 pI 得到得到矢量 m1, 将 pD 减 pI 得到矢量 m2, 算出矢量 m1 的法 线向量 m3, 算出矢量 m2 的法线向量 m4, 计算 m3 和 m4 的点积 d1。
步骤 109, 如果 d 和 d1 都等于 0 则两个线段相交, 交点坐标就是 pI, 否则两个线段 不相交。 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所作的任何修改、 等同替换等, 均应包含在本发明的保护范围之内。