我不能使用与一起使用的量化值PyOpenGL.glRotatef文件团结一致

2024-04-25 00:18:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有四元数的值(x,y,z,w)=(p0,p1,p2,p3) 在pyOpenGl中

 norm=math.sqrt(program_dict['q0']*program_dict['q0'] + program_dict['q1']*program_dict['q1'] + program_dict['q2']*program_dict['q2'] + program_dict['q3']*program_dict['q3'])
    glPushMatrix()
    if (norm == 0):
        pass
    else:
        program_dict['q0'] = program_dict['q0'] / norm
        program_dict['q1'] = program_dict['q1'] / norm
        program_dict['q2'] = program_dict['q2'] / norm
        program_dict['q3'] = program_dict['q3'] / norm
        theta = ( math.acos(program_dict['q3'])*2)
        aNorm =  math.sqrt(program_dict['q1'] * program_dict['q1'] + program_dict['q2'] * program_dict['q2'] + program_dict['q0'] * program_dict['q0'])
        if (aNorm != 0):
            glRotatef(theta*180.0/math.pi, program_dict['q2']/aNorm, -program_dict['q0']/aNorm, program_dict['q1']/aNorm)
        else:
            glRotatef(theta*180.0/math.pi, program_dict['q2'], -program_dict['q0'], program_dict['q1']) 

我首先规范化数据(顺便说一句,数据来自一个原型设备,所以它必须规范化) 如何在c#Unity中使用它并旋转对象?我不知道团结部队是怎么运作的。。。你知道吗


Tags: normifpimathsqrtprogramelsedict
1条回答
网友
1楼 · 发布于 2024-04-25 00:18:49

这里混淆的是轴角表示法和四元数。您使用的glRotatef使用前者,而Unity的rotationlocalRotation是后者。你知道吗

但是,您可以在两者之间转换。^{}就是这样。它采用轴角度表示法并将其转换为相应的四元数。例如,您可以将其输入到localRotation。你知道吗

相关问题 更多 >