首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三个JS相机方位返回值180度而不是360度

三个JS相机方位返回值180度而不是360度
EN

Stack Overflow用户
提问于 2015-11-12 18:39:43
回答 1查看 1.3K关注 0票数 1

我试图建立一个指南针嵌入在一个Three.JS场景飞控。我已经在离我的飞机很远的地方放置了一个北点,并把它作为北参。我希望指南针根据从相机到太空点的角度旋转。我用下面的方法来确定这个角度,但是它喷出的是从1到180,然后下降到179,当我旋转的时候,而不是继续从181到360。知道这是为什么吗?

代码语言:javascript
复制
var vector = new THREE.Vector3(0, 0, -1);
    vector.applyQuaternion(camera.quaternion);
    angle = vector.angleTo(north.position);

    var degree = angle * (180 / 3.14159);
    console.log(degree);

    compass2.rotation.y = (angle);

我会链接到这个项目,这样你就可以看到问题正在发生。

XkORRtWN2OcGstUjE5R0RRWc/PDSFly身.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-15 22:07:31

解决了!我选择了一个不同的系统,在这个系统中,我把第二相机放在一个圆柱体内,结束盖关闭,并设置为显示背面的网格。然后,我简单地添加了代码来匹配从camera1到camera1的旋转角度。即时指南针!

代码语言:javascript
复制
//Load Compass Model
    var compassGeometry = new THREE.CylinderGeometry(30, 30, 30, 20, 1, 1); 
    var compassMaterial = new THREE.MeshPhongMaterial({
        map: THREE.ImageUtils.loadTexture('assets/CompassTexture.svg')
    });
    compass2 = new THREE.Mesh(compassGeometry, compassMaterial);
    compass2.material.side = THREE.BackSide;
    compass2.rotation.x = 1.57;
    compass2.rotation.y = 0.10;
    scene2.add(compass2)

 //Animate
    function animate() {
        requestAnimFrame(animate);
        controls.update(1);

        //match camera2 rotation to camera1
        camera2.rotation.x = camera.rotation.x;
        camera2.rotation.y = camera.rotation.y;
        camera2.rotation.z = camera.rotation.z;

        render();
    }

工作版本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33678861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档