我在我的场景中有一个模拟时钟,我想用当前时间更新。现在我可以通过每隔1秒计算每只手的旋转来让时钟保持时间,但是我看到了分针和小时针的一些奇怪结果。Javascript:使用rotate创建具有threejs的模拟时钟
hourHand = scene.getObjectByName('Box001');
minuteHand = scene.getObjectByName('Box002');
secondHand = scene.getObjectByName('Cylinder002');
var d = new Date();
var mins = d.getMinutes();
var secs = d.getSeconds();
var hours = d.getHours();
minuteHand.rotateY((-mins/60) * (2 * Math.PI));
secondHand.rotateY(((mins /60) + (-secs/3600)) * (2 * Math.PI));
hourHand.rotateY(((-hours/12) + (mins/720)) * (2 * Math.PI));
setInterval(function(){
minuteHand.rotateY((2 * Math.PI)/-3600);
secondHand.rotateY((2 * Math.PI)/-60);
hourHand.rotateY((2 * Math.PI)/(-3600 * 12));
},1000);
是我遇到的问题是:
- 如果时间为4:30,时针是4时,它应与4和5,同样的问题之间分针
- 我不知道我使用的数学是否正确,因为随着时间的推移,我看到一些奇怪的问题,我无法确定。
有没有更确切的方法来做到这一点?
你能提供一个小提琴吗? – Quince 2015-02-09 16:31:51
对不起,我无法做一个小提琴,因为我正在使用的模型的跨域问题和一些隐私问题。我会尽可能提供任何信息。 – DezOnlyOne 2015-02-09 21:49:25
我做了一个提示更新的小提琴。 https://jsfiddle.net/DezOnlyOne/ag5gds3f/1/ – DezOnlyOne 2015-02-10 16:16:41