如题
c/c++的DVec3d下有一个FromRotateVectorAroundVector满足您的要求,但是c#的DVector3d似乎没有封装对应的函数,这个您可能得想办法调用c/c++的接口,或者自行构造数学算法来完成了。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
Answer Verified By: Geping Wen
记录一下,若是知道DVector3d的两个点,那么可以将这两个点先生成一条LineElement,然后将该LineElement由你想要的方式进行旋转,旋转完毕后可以将其转化为CurveVector,用CurveVector的GetStartEnd方法获取该线的两点PtA与PtB,然后可以用这两个点来生成一个新的Dvector3d,此时这个新的向量就是你想要的向量了
再记录一笔:DVector3d中有个函数CrossProduct,它是用来算两个向量交叉点法向量的,既然是要旋转90°那么就可能可以用到它,比如:有一个自定义的向量vec,以及一个轴向量axisVec,现在我要vec以axisVec为轴旋转90°,那么只要写vec.CrossProduct(axisVec)即可,当然了,如果想要让它为单位向量,也可以写成vec.CrossProduct(axisVec).TryNormalize(out DVector3d normalizeVec);