为了账号安全,请及时绑定邮箱和手机立即绑定

java 小时钟,怎么理解用数学函数求指针端点坐标 ?

/ 猿问

java 小时钟,怎么理解用数学函数求指针端点坐标 ?

JVM
有只小跳蛙 2019-02-15 15:11:30

java 小时钟,怎么理解用数学函数求指针端点坐标 


查看完整描述

2 回答

?
森栏

角度deg转弧度rad的方法如下

rad = deg/ 180.0 * 3.1415926;

java里封装好的方法是

rad=Math.toRadians(deg);

已知 圆心是 x,y ,半径是r ,弧度是rad 根据弧度计算圆周上点的坐标的方法

  • 如果是正东方向,作为0度 起点,计算公式如下

12double x1 = x + cos(rad)*r;double y1 = y + sin(rad)*r;
  • 如果是正北方向,作为0度的起点, 计算公式如下

    [*说明,时钟就是以正北方向作为0度起点来计算度数的]

  • 第一种写法

12double x1 = x + sin(rad)*r;double y1 = y - cos(rad)*r;

第二种写法

12double x1 = x + sin(rad)*r;double y1 = y + cos(rad+3.14159265358979323846)*r;

但是明显第一种写法更优雅一点 .

所以下面的代码,就可以简化修改

123456    hx=r1*Math.sin(hdeg)+x;    hy=r1*Math.cos(hdeg+Math.PI)+y;      mx=r2*Math.sin(mdeg)+x;      my=r2*Math.cos(mdeg+Math.PI)+y;      sx=r3*Math.sin(sdeg)+x;       sy=r3*Math.cos(sdeg+Math.PI)+y;

建议修改成

123456hx = x + r1 * Math.sin(hdeg);hy = y - r1 * Math.cos(hdeg);mx = x + r2 * Math.sin(mdeg);my = y - r2 * Math.cos(mdeg);sx = x + r3 * Math.sin(sdeg);sy = y - r3 * Math.cos(sdeg);

其他细节: 

时钟的效果有严重的锯齿现象, 如下图

修改paintComponent 方法即可

1234567891011121314151617181920212223public void paintComponent(Graphics g) {    super.paintComponent(g);    // 把g转成g2d对象    Graphics2D g2d = (Graphics2D) g;    //消除图像锯齿    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);    //消除文本锯齿    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);    //设置字体格式    g2d.setFont(new Font("宋体",Font.BOLD,18));    //开始绘制    g2d.clearRect(00500500);    g2d.drawString("我的简易时钟"21050);    g2d.drawString("12"245135);    g2d.drawString("3"355250);    g2d.drawString("6"245365);    g2d.drawString("9"125250);    g2d.drawOval(120120250250);    g2d.drawLine(x, y, (int) hx, (int) hy);    g2d.drawLine(x, y, (int) mx, (int) my);    g2d.drawLine(x, y, (int) sx, (int) sy); }



查看完整回答
反对 回复 2019-03-18
?
精慕HU

就是三角函数,
已知圆心,看成三角的一个顶点,
已知半径,看成一等腰三角形一边和边长。
已知夹角角度,就是时钟指针和水平的夹角。
求三角形的另一个顶点的坐标,该坐标和圆心画直线就是指针。
用几何基础知识可求出

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 401 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信