几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(VB.NET/C#) (http://www.dimcax.com/hust/forumdisplay.php?f=176)
-   -   【转帖】关于两个向量求夹角的问题 很实用 (http://www.dimcax.com/hust/showthread.php?t=14121)

yang686526 2009-04-29 05:20 PM

【转帖】关于两个向量求夹角的问题 很实用
 
关于两个向量求夹角的问题 很实用
www.dimcax.com
关于两个向量求夹角的问题 很实用

假设有向量a,向量b,现在我想得到从向量a顺时针旋转到向量b的角度。 注意是顺时针.
在arx中有一个
angleto(const acgevector3d& vec) const;
的函数,可以得到两个向量在0……pai之间的夹角。(据说也能得到0……2pai之间的角,但是怎么得到,没弄明白,!)
我用图片说明下我的问题,
但是如果夹角大于pai时怎么处理呢?
下面这几行代码解决这个问题:
if ((a.crossproduct(b)).z <= 0.0)
{
vecangle=a.angleto(b);
}
else
{
vecangle=2*pai-a.angleto(b);
}
我解释下:
如果a和b的点积向量是向下的(a,b均在水平面上)
说明a和b顺时针夹角是0……pai
否则是pai……2pai
至于为什么涉及到矩阵知识,就不解释了。
支持楼主,
好,本站论坛上很缺这些实用的小东东
很想知道double angleto(
const acgevector3d& vec,
const acgevector3d& refvec) const;
这个函数里面的refvec这个怎么用
呵呵, 很有新意, 帮楼主顶!
impossible is nothing


所有的时间均为北京时间。 现在的时间是 01:12 PM.