如何确定 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);
});
我被困在这个问题上,我的数学技能不及格。我已经设置了一个工作 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);
});