我使用这个函数来创建一个十二边形: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 值?我必须使用双打吗?
添加回答
举报
0/150
提交
取消