Javascript 如何24小时定位这些数字?
很明显我的三角架有点生锈了。我怎样才能得到一分钟的时间 [更新:忘记了codepen的版本不像JSFIDLE;这个“pen”是一个正在进行的工作,不再代表我在回答这个问题时遇到的问题] Javascript:Javascript 如何24小时定位这些数字?,javascript,jquery,math,trigonometry,Javascript,Jquery,Math,Trigonometry,很明显我的三角架有点生锈了。我怎样才能得到一分钟的时间 [更新:忘记了codepen的版本不像JSFIDLE;这个“pen”是一个正在进行的工作,不再代表我在回答这个问题时遇到的问题] Javascript: var r = $('.face').width()/2; var j = r-18; for(var min=0; min<60; min += 5) { var str = min < 10 ? '0'+min : String(min); var x = j*Ma
var r = $('.face').width()/2;
var j = r-18;
for(var min=0; min<60; min += 5) {
var str = min < 10 ? '0'+min : String(min);
var x = j*Math.sin(Math.PI*2*(min/60));
var y = j*Math.cos(Math.PI*2*(min/60));
console.log(x);
$('<div>',{'class':'time'})
.text(str)
.css({
marginLeft: (x+r-12)+'px',
marginTop: (-y+r-12)+'px'
})
.appendTo('.face');
}
var r=$('.face').width()/2;
var j=r-18;
对于(var min=0;min假设min在0-60之间,并记住圆中有360度:
var degToMin = 360/60; // 6
var minDeg = min * degToMin; // this will tell us how many degrees around the circle the minutes are
var minRad = minDeg * (Math.PI/180); // convert to radians
var x = j*Math.cos(minRad); // cos is the x coord, while sin is the y coord
var y = j*Math.sin(minRad);
假设最小值在0-60之间,并记住圆中有360度:
var degToMin = 360/60; // 6
var minDeg = min * degToMin; // this will tell us how many degrees around the circle the minutes are
var minRad = minDeg * (Math.PI/180); // convert to radians
var x = j*Math.cos(minRad); // cos is the x coord, while sin is the y coord
var y = j*Math.sin(minRad);
从0
到360
度(0
到2π
弧度)通常从3点钟开始,然后逆时针旋转
所以我们需要反转方向,使其顺时针旋转,然后逆时针旋转90度(pi/2
radians),使其从12点开始
每小时都经过pi/6
弧度,因此小时h
的位置为:
x = x_c + r cos (-h*pi/6 + pi/2)
y = y_c + r sin (-h*pi/6 + pi/2)
时钟的中心是(x\u c,y\u c)
,时钟的半径是r
,从0
到360
度(0
到2pi
弧度)通常从3点钟开始,逆时针方向
所以我们需要反转方向,使其顺时针旋转,然后逆时针旋转90度(pi/2
radians),使其从12点开始
每小时都经过pi/6
弧度,因此小时h
的位置为:
x = x_c + r cos (-h*pi/6 + pi/2)
y = y_c + r sin (-h*pi/6 + pi/2)
时钟的中心是(x\u c,y\u c)
你的时钟半径是r
你所有的时间刻度都在一个之下。给.time
类绝对定位。你所有的时间刻度都在一个之下。给.time
类绝对定位。OP已经处理过这个问题:数学.PI*2*(min/60)
。度数不包括在内。这是事实,但我更喜欢不太复杂的代码,尤其是在示例中,因为它更容易理解。我认为主要的问题是混淆了cos和sin。不,代码的触发函数顺序正确,因为它从顶部顺时针移动,而不是角度测量的常规方向。OP already处理了这个问题:Math.PI*2*(min/60)
。度数不包括在内。这是事实,但我更喜欢不太复杂的代码,尤其是在示例中,因为它更容易理解。我认为主要的问题是混淆了cos和sin。不,代码的触发函数顺序正确,因为它是从顶部顺时针进行的,而不是角度测量的常规方向。转动o但是你的三角很好。顺便说一句,你可以把Math.PI*2*(min/60)
简化为Math.PI*min/30
,或者干脆把min*0.10472
变成你的三角很好。顺便说一句,你可以简化Math.PI*2*(min/60)
到数学.PI*min/30
,甚至只是min*0.10472
他已经通过相互切换sin
和cos
解决了这个问题。他已经通过相互切换sin
和cos
解决了这个问题。+1是唯一正确的答案。我会给另一个答案唯一一个在没有通读的情况下不认为数学是错误的。哈!我搞乱了CSS,一定已经删除了。谢谢你抓住了我的愚蠢错误:-)+1是唯一正确的答案。我会再给你一个,因为我是唯一一个没有通读就认为数学是错的人。哈!我搞乱了CSS,一定是把它删除了。谢谢你抓住我愚蠢的错误:-)