Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 1. 数学几何计算基础

  • 2.位移、速度、加速度(向量)

  • 3.向量点乘、叉乘

  • 4.四元数、欧拉角(角度姿态)

    • 1. 欧拉角Euler
    • 2. 四元数Quaternion
    • 3. 四元数表示物体姿态
      • 4. 四元数乘法运算
      • 5. 四元数表示两个向量旋转
    • 5.矩阵

    • 6.射线

    • 7.包围盒

    • 8.第一、三人称漫游

    • 9.漫游-八叉树碰撞检测

    • 10.CannonJS物理引擎

    • Three.js进阶教程
    • 4.四元数、欧拉角(角度姿态)
    郭隆邦
    2023-06-22
    目录

    3. 四元数表示物体姿态

    # 四元数Quaternion表示物体姿态

    Three.js模型对象都有一个属性.quaternion,.quaternion的属性值就是四元数对象Quaternion。你可以通过物体.quaternion属性改变物体的姿态角度。

    # 创建一个四元数

    创建一个绕x轴旋转90度的四元数

    // 四元数表示姿态角度
    const quaternion = new THREE.Quaternion();
    // 旋转轴new THREE.Vector3(1,0,0)
    // 旋转角度Math.PI/2
    quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI / 2);
    

    # .quaternion属性

    改变物体的四元数属性.quaternion,也就是改变物体的姿态角度。

    .copy()是四元数的一个方法,A.copy(B)表示把A四元数设置为B四元数的值,或者说把B的值复制给A。

    const quaternion = new THREE.Quaternion();
    quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI / 2);
    //quaternion表示旋转角度复制给物体.quaternion
    fly.quaternion.copy(quaternion);
    

    # 总结:物体角度属性.rotation和四元数属性.quaternion

    three.js模型对象的角度.rotation和四元数.quaternion属性都是用来表示物体姿态角度的,只是表达形式不同而已,.rotation和.quaternion两个属性的值,一个改变,另一个也会同步改变。

    const quaternion = new THREE.Quaternion();
    quaternion.setFromAxisAngle(new THREE.Vector3(0, 0, 1), Math.PI / 2);
    fly.quaternion.copy(quaternion);
    // 四元数属性改变后,查看角度属性(欧拉角)变化
    // .quaternion改变,.rotation同步改变
    console.log('角度属性',fly.rotation.z);
    
    2. 四元数Quaternion
    4. 四元数乘法运算

    ← 2. 四元数Quaternion 4. 四元数乘法运算→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式