沿球面X轴旋转点

问题描述

我有这个公式可以绕球旋转

double naX = o.Node.Angle.X;
double naY = o.Node.Angle.Y;

double x = o.DrawingPosition.X - 4.0 * Math.Cos(naX) * Math.Sin(naY);
double y = o.DrawingPosition.Y - 4.0 * Math.Sin(naX) * Math.Sin(naY);
double z = o.DrawingPosition.Z - 4.0 * Math.Cos(naY);

要遵循的半径是4.0,o.DrawingPosition是中心

我希望它沿x轴旋转(我有一个四元数和一个为Z -1法线计算而归一化的单位矢量),但是如果我添加偏移量,角度将不匹配

naX += _rotationTicks;
naY += _rotationTicks;

例如,它将遵循无限的形状轨迹,我该如何计算正确的旋转,使其表现得像一个完美的圆?

编辑: 我在Rotating body from spherical coordinates

上找到了这个答案

但是主要的核心区别是XY旋转角度和原点都是任意值,存在一个用四元数计算出的正向矢量来确定朝向:

var quat = System.Numerics.Quaternion.CreateFromYawPitchRoll((float)o.Node.Angle.X,(float)o.Node.Angle.Y,0);


var dirVec = new Vector3(0,-1,0).ToNumerics();

var downwards = quat.Multiply(dirVec); // it can be backwards,left,right,etc,changing the unit vector from dirVec

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)