如何确定 rotating/animating 圆柱体的旋转角度? Three.js

How to determine the angle of rotation for a rotating/animating cylinder? Three.js

我被困在这个问题上,我的数学技能不及格。我已经设置了一个工作 fiddle here.

我已经能够从旋转圆柱体中提取 y 和 z 位置,并且能够在看到数字 1 时停止动画。我正在使用这种丑陋的方法来做到这一点:

if (p > 75 && p < 90 && pp > 155 && pp < 165){

在观察 y 和 z 值时,我注意到值变化相当大(多次尝试 运行 样本),我不得不检查某个范围。

因为我在圆柱体上有 8 个面,所以我希望简单地提取 "front"(或面向某个方向)的面数。或者检查圆柱体在旋转过程中的角度。我不知道如何在动画期间输出角度。

如果有人能给我一个线索,我将不胜感激。

我创建了一个新的fiddle:http://jsfiddle.net/5vxvLdub/3/

相关部分:

    function fuzzyEqual( n1, n2 ) {
        var epsilon = .01;
        return ( n1 - epsilon < n2 ) && ( n1 + epsilon > n2 );
    }

    var desiredNum = 3,
        faces = 8,
        theta = Math.PI * 2 * ( faces - desiredNum - 5.5 ) / faces,
        destY = Math.cos( theta ),
        destZ = Math.sin( theta );

    // request new frame
    requestAnimationFrame(function(){
        // ugly method :p
        if ( fuzzyEqual( o.y, destY ) && fuzzyEqual( o.z, destZ ) ){
            return;
        }
        animate(time);
    });