当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Quaternion.setFromAxisAngle方法代码示例

本文整理汇总了TypeScript中THREE.Quaternion.setFromAxisAngle方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Quaternion.setFromAxisAngle方法的具体用法?TypeScript Quaternion.setFromAxisAngle怎么用?TypeScript Quaternion.setFromAxisAngle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在THREE.Quaternion的用法示例。


在下文中一共展示了Quaternion.setFromAxisAngle方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: addElement

function addElement( elem ) {
  const scene = elem.getScene();

  const geo = elem.getAttribute( "geo" );
  const type = geo.type.split( "Buffer" )[ 0 ];
  let sceneIndex = sceneList.indexOf( scene );

  if ( sceneIndex === -1 ) {
    exportData.createWorld( scene );
    sceneIndex = sceneList.indexOf( scene );
  }

  objectList[ sceneIndex ].push( elem );

  const position = elem.coreObject.getWorldPosition();
  const quaternion = elem.coreObject.getWorldQuaternion();
  const scale = elem.coreObject.getWorldScale();

  if ( type === "Cylinder" ) {
    quaternion.multiply( tmpQuat.multiplyQuaternions(
      cylinderQuat,
      rotateQuat.setFromAxisAngle( rotateVec, Math.PI / cylinderAngle( geo.value[ 3 ] ) )
    ) );
  }

  return {
    position: { x: position.x, y: position.y, z: position.z },
    quaternion: { w: quaternion.w, x: quaternion.x, y: quaternion.y, z: quaternion.z },
    scale: { x: scale.x, y: scale.y, z: scale.z },
    sceneIndex,
    size: geo.value.slice( 0, type === "Cylinder" ? 4 : type === "Box" ? 3 : type === "Plane" ? 2 : 1/*Sphere*/ ),
    type,
  };
}
开发者ID:luca3104,项目名称:solufa,代码行数:34,代码来源:physics.ts

示例2: function

      objects.forEach( function( object, I ) {
        if ( object.getAttribute( "physics" ).mass === 0 ) { return; }

        let i = I + 1; // index of GroundPlane == 0

        object.coreObject.position.set(
          e.data.dataList[ index ].positions[ 3 * i ],
          e.data.dataList[ index ].positions[ 3 * i + 1 ],
          e.data.dataList[ index ].positions[ 3 * i + 2 ]
        );

        object.coreObject.quaternion.set(
          e.data.dataList[ index ].quaternions[ 4 * i ],
          e.data.dataList[ index ].quaternions[ 4 * i + 1 ],
          e.data.dataList[ index ].quaternions[ 4 * i + 2 ],
          e.data.dataList[ index ].quaternions[ 4 * i + 3 ]
        );

        if ( /^Cylinder/.test( object.getAttribute( "geo" ).type ) ) {
          object.coreObject.quaternion.multiply( tmpQuat.multiplyQuaternions(
            cylinderQuat,
            rotateQuat.setFromAxisAngle( rotateVec, Math.PI / cylinderAngle( object.getAttribute( "geo" ).value[ 3 ] ) )
          ).inverse() );
        }

      });
开发者ID:luca3104,项目名称:solufa,代码行数:26,代码来源:physics.ts

示例3: _createQuaternion

  _createQuaternion(dimension: MTNX.Dimension, degrees: number) {
    const quaternion = new THREE.Quaternion();

    const rads = degreesToRadians(degrees);

    const Dimension = MTNX.Dimension;
    switch (dimension) {
      case Dimension.X:
        quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), rads);
        break;
      case Dimension.Y:
        quaternion.setFromAxisAngle(new THREE.Vector3(0, 1, 0), rads);
        break;
      case Dimension.Z:
        quaternion.setFromAxisAngle(new THREE.Vector3(0, 0, 1), rads);
        break;
      default:
        console.warn(`Didn't set quaternion value for ${$$hex(dimension)}`);
    }

    return quaternion;
  }
开发者ID:PartyPlanner64,项目名称:PartyPlanner64,代码行数:22,代码来源:MtnxToThreeJs.ts


注:本文中的THREE.Quaternion.setFromAxisAngle方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。