[发明专利]一种三维场景自动寻找线段交点的方法无效
申请号: | 201010232613.X | 申请日: | 2010-07-21 |
公开(公告)号: | CN101908222A | 公开(公告)日: | 2010-12-08 |
发明(设计)人: | 汪林 | 申请(专利权)人: | 北京水晶石数字科技有限公司 |
主分类号: | G06T15/00 | 分类号: | G06T15/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100089 北京市西*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 三维 场景 自动 寻找 线段 交点 方法 | ||
技术领域
本发明涉及一种三维场景的应用,特别是一种三维场景中寻找线段交点的方法。
技术背景
在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,否则两个线段不相交。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京水晶石数字科技有限公司,未经北京水晶石数字科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010232613.X/2.html,转载请声明来源钻瓜专利网。