当前位置: 技术问答>java相关
为何时针坐标有误?
来源: 互联网 发布时间:2015-04-22
本文导语: 显示时钟是多线程的典型例程,但我发现有如下问题,哪位大哥告知一下原因。 时针的坐标是这样算的:(xcenter,ycenter为钟面的原点) xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter); yh = (int)(Math.sin((h...
显示时钟是多线程的典型例程,但我发现有如下问题,哪位大哥告知一下原因。
时针的坐标是这样算的:(xcenter,ycenter为钟面的原点)
xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);
yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);
这样显示结果没有问题,但是如果改成下面的写法,时针位置就是错误的
xh=(int)(Math.cos((h/6 + m/360 - 1/2) * 3.14f)*30 + xcenter);
yh=(int)(Math.sin((h/6 + m/360 - 1/2) * 3.14f)*30 + ycenter);
时针的坐标是这样算的:(xcenter,ycenter为钟面的原点)
xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);
yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);
这样显示结果没有问题,但是如果改成下面的写法,时针位置就是错误的
xh=(int)(Math.cos((h/6 + m/360 - 1/2) * 3.14f)*30 + xcenter);
yh=(int)(Math.sin((h/6 + m/360 - 1/2) * 3.14f)*30 + ycenter);
|
xh=(int)(Math.cos((h/6 + m/360 - 1/2) * 3.14f)*30 + xcenter);
中的(h/6 + m/360 - 1/2)是按整数取整运算,应改为
xh=(int)(Math.cos((h/6f + m/360f - 1/2f) * 3.14f)*30 + xcenter);
其它语句也需要做相应的改动,不要直接用两个整数相除
中的(h/6 + m/360 - 1/2)是按整数取整运算,应改为
xh=(int)(Math.cos((h/6f + m/360f - 1/2f) * 3.14f)*30 + xcenter);
其它语句也需要做相应的改动,不要直接用两个整数相除
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。