У меня есть аналоговые часы в моей сцене, которые я хотел бы обновить с текущим временем. Прямо сейчас я могу заставить часы держать время, вычисляя вращение каждой руки с интервалом в 1 секунду, но я вижу некоторые странные результаты для минутных и часовых рук.Javascript: Создание аналоговых часов с тремяjs с помощью поворота
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
Извините, я не могу делать скрипку из-за проблем с перекрестным доменом и некоторых проблем с конфиденциальностью для модели, которую я использую. Однако я предоставлю любую информацию. – DezOnlyOne
Я сделал скрипку, которая показывает обновление. https://jsfiddle.net/DezOnlyOne/ag5gds3f/1/ – DezOnlyOne