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

Java Graphics2d:如何使用 int 值平滑地旋转十二边形

Java Graphics2d:如何使用 int 值平滑地旋转十二边形

哔哔one 2021-08-04 17:46:09
我使用这个函数来创建一个十二边形:private void getPoints(int x0, int y0,int r,int noOfDividingPoints){    double angle1 = 1;    x = new int[noOfDividingPoints];    y = new int[noOfDividingPoints];    for(int i = 0 ; i < noOfDividingPoints  ;i++)    {        angle1 = i * (360/noOfDividingPoints);        x[i] = (int) Math.round(x0 + r * Math.cos(Math.toRadians(angle1)));        y[i] = (int) Math.round(y0 + r * Math.sin(Math.toRadians(angle1)));    }}然后我围绕一个中心旋转所有点:for (int i = 0; i < SLICES; i++) {    int x1 = x[i] - center.x;    int y1 = y[i] - center.y;    int x2 = (int) Math.round(x1 * Math.cos(radian) - y1 * Math.sin(radian));    int y2 = (int) Math.round(x1 * Math.sin(radian) + y1 * Math.cos(radian));    x[i] = x2 + center.x;    y[i] = y2 + center.y;}有了这个,我终于画了线:    for (int i = 0; i < SLICES; i++) {        g.drawLine(center.x, center.y, x[i], y[i]);        if (i != 0 ) {            g.drawLine(x[i-1], y[i-1], x[i], y[i]);        } else {            g.drawLine(x[i], y[i], x[x.length-1], y[x.length-1]);        }    }问题:十二边形旋转,但旋转会使顶点变形,使形状略微不规则;它在旋转过程中发生变化:这是因为 Math.round() 完成了从 double 到 int 的转换。不使用 Math.round() 十二边形折叠到中心。如何在不改变形状的情况下使用 int 值?我必须使用双打吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

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