如何从对象3D变换获取旋转角度?求解管滚转角通用方案
问题:直管与套筒的姿态角(滚转/偏航/俯仰)计算
我不确定有没有人问过类似问题,折腾好几天都没解决。我在做一个包含直管和套筒的项目,套筒安装位置没问题,但得和管子对齐朝向,现在主要关注滚转角,同时也想掌握偏航、俯仰角的计算方法。
该管带有变换数据,包含管中心原点及三个基轴XYZ点,测试用例数据如下:
origin:{(119.814557964, -37.330669765, 8.400185257)}, BasisX: {(1.000000000, 0.000000000, 0.000000000)}, BasisY: {(0.000000000, 0.939692621, 0.342020143)}, BasisZ: {(0.000000000, -0.342020143, 0.939692621)}.
我尝试过以下方法,有一定效果:
// 注:我知道这段代码里很多变量没必要这么用,不敢改怕越改越乱 upDownAxis = givenSleeveObject.passedOnTransform.BasisZ; leftRightAxis = givenSleeveObject.passedOnTransform.BasisX; tempOfVector = givenSleeveObject.passedOnTransform.OfVector(upDownAxis);//这个OfVector是把变换应用到向量上 rotationAngle = upDownAxis.AngleOnPlaneTo(tempOfVector, leftRightAxis);
这个方法能算出测试管的旋转角度为20度,但沿Y轴计算效果不佳,沿Z轴计算完全错误,推测是旋转后轴方向变化导致的。补充说明:管的走向沿BasisX轴,若仅Z轴为1则表示管朝上。
现需解决:如何在管任意朝向时计算其滚转角?长期来看旋转方向也很重要,既然对象变换数据自身关联,应该存在计算任意姿态下滚转角的方法,对吗?
内容的提问来源于stack exchange,提问作者Chris K
相关产品推荐
相关产品推荐

