昨天敲一个时钟程序的列子的时候看到这个方法:
Math.cos(var*3.14f/30-3.14f/2)*45+xcenter
Math.sin(var*3.14f/30-3.14f/2)*45+ycenter
是设定秒针的x,y坐标的,*45是指定指针长度,xcenter,ycenter是圆心坐标,但是cos()跟sin()里面的我还是看不懂,有懂原理的吗,帮我解释下~~谢谢

解决方案 »

  1.   

    大哥,你需要补习一下中学数学180度是π,360度是2π,
    var = 0 - 60,代表秒数,如果放到数学XOY坐标系的话,
    x = r * cos(sec / 60 * 2π) = r * cos(sec * π / 30)
    y = r * sin(sec / 60 * 2π) = r * sin(sec * π / 30)
    但是,由于数学XOY的坐标系0度(0弧度)的起点在X轴上,所以需要把弧度减去45度,即π/2同时,由于数学XOY坐标系,度数变换是逆时针,导致同一个度数cos相同,sin相反。但是由于屏幕坐标系上面的Y小,下面的大,正好抵消,所以,这个差别可以不计。