程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数?

开发过程中遇到三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数的问题如何解决?下面主要结合日常开发的经验,给出你关于三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数的解决方法建议,希望对你解决三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数有所启发或帮助;

我目前正在开发一个 Three.Js 项目。

其中一项任务是围绕局部x轴z轴rxrz旋转椭圆强>度;然后沿全局轴 (0,1,0) 旋转 ry 度。 我的代码是这样的

    function createOrbit(ax,xRadius,yRadius,rx,ry,rz){
    const curve = new THREE.EllipseCurve(
        ax,// ax,aY
        xRadius,// xRadius,yRadius
        0,2 * Math.PI,// aStartAngle,aEndAngle
        false,// aClockwise
        0                // aRotation
    );
    const points = curve.getPoints( 50 );
    const geometry = new THREE.bufferGeometry().setFromPoints( points );
    const material = new THREE.lineBasicMaterial( { color : 0xffff00 } );
    // Create the final object to add to the scene
    const ellipse = new THREE.line( geometry,material );
    ellipse.rotation.x += rx;
    ellipse.rotation.z += rz;
    yax = new THREE.Vector3(0,0);
    ellipse.setRotationFromAxisAngle(yax,ry);

    return ellipse;
}

然而,我发现函数ellipse.setRotationFromAxisAngle(yax,ry)会消除现有的并重新引入一组由

引入的新四元数
    ellipse.rotation.x += rx;
    ellipse.rotation.z += rz;

有什么建议可以解决这个问题吗?

解决方法

是的,发生这种情况是因为任何名为 .set() 的方法自然会覆盖之前的状态。您需要做的是访问 Quaternion(这是一个计算所有旋转的数学对象)并将其乘以@R_673_10062@:

ellipse.rotation.x += rx;
ellipse.rotation.z += rz;

// Create new rotation object
const yQuaternion = new THREE.Quaternion();
yQuaternion.setFromAxisAngle(yax,ry);

// Multiply the ellipse's rotation with the y-axis rotation
ellipse.quaternion.multiply(yQuaternion);

您可以在此处阅读有关四元数的更多信息:https://threejs.org/docs/#api/en/math/Quaternion

大佬总结

以上是大佬教程为你收集整理的三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数全部内容,希望文章能够帮你解决三.js ellipse.setRotationFromAxisAngle 消除了现有的四元数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:三.js