gpt4 book ai didi

java - 在 1 轴上旋转四元数?

转载 作者:太空狗 更新时间:2023-10-29 23:01:29 24 4
gpt4 key购买 nike

我有一个由四元数旋转的模型。我只能设置旋转,我不能添加或减去任何东西。我需要获取轴的值,而不是为其添加角度(可能是度数或弧度?),然后重新添加修改后的四元数。

我该怎么做? (在每个轴上回答)。

最佳答案

您可以将两个四元数相乘以产生第三个四元数,它是两次旋转的结果。请注意,四元数乘法是不可交换的,这意味着顺序很重要(如果你在脑海中多次这样做,你就会明白为什么)。

您可以生成一个四元数,表示围绕特定轴旋转给定角度的四元数(请原谅它是 C++,而不是 Java):

Quaternion Quaternion::create_from_axis_angle(const double &xx, const double &yy, const double &zz, const double &a)
{
// Here we calculate the sin( theta / 2) once for optimization
double factor = sin( a / 2.0 );

// Calculate the x, y and z of the quaternion
double x = xx * factor;
double y = yy * factor;
double z = zz * factor;

// Calcualte the w value by cos( theta / 2 )
double w = cos( a / 2.0 );

return Quaternion(x, y, z, w).normalize();
}

例如,要围绕 x 轴旋转,您可以使用 createFromAxisAngle(1, 0, 0, M_PI/2) 创建四元数,然后将其乘以模型的当前旋转四元数。

关于java - 在 1 轴上旋转四元数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com