Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复正多边形_Java_Graphics_Polygon - Fatal编程技术网

Java 如何修复正多边形

Java 如何修复正多边形,java,graphics,polygon,Java,Graphics,Polygon,我正在用java图形绘制多面多边形。我的算法只有在涉及少量边时才能很好地工作。例如,当多边形有50多条边时,如何修复它 // PolygonsGUI. The value represents the number of sides of the polygon - Xiao 2019 int x0 = dim.width / 2; int y0 = dim.height / 2; int r = Math.min(x0, y0) - 2 * gap;

我正在用java图形绘制多面多边形。我的算法只有在涉及少量边时才能很好地工作。例如,当多边形有50多条边时,如何修复它

    // PolygonsGUI. The value represents the number of sides of the polygon - Xiao 2019
    int x0 = dim.width / 2;
    int y0 = dim.height / 2;
    int r = Math.min(x0, y0) - 2 * gap;

    int[] xx = new int[value];
    int[] yy = new int[value];

    for (int i = 0; i < value; i++) {
        Double a = i * (Math.toRadians(360 / (double)value));
        xx[i] = (int) (x0 + (r * Math.sin(a)));
        yy[i] = (int) (y0 + (r * Math.cos(a)));
    }

    g.drawPolygon(xx, yy, value);
//PolygonsGUI。该值表示多边形的边数-边数
int x0=尺寸宽度/2;
int y0=尺寸高度/2;
int r=数学最小值(x0,y0)-2*间隙;
int[]xx=新的int[值];
int[]yy=新的int[值];
for(int i=0;i
您的程序运行正常。我画了从中心到多边形上每个点的线来显示半径。也许问题出在代码的其他地方

导入java.awt.Dimension;
导入java.awt.Graphics;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类PolygonDemo扩展了JPanel{
JFrame=新JFrame();
整数宽度=500;
内部高度=500;
int gap=20;
整数值=50;
int[]xx=新的int[值];
int[]yy=新的int[值];
int x0=宽度/2;
int y0=高度/2;
公共PolygonDemo(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。添加(此);
setPreferredSize(新尺寸(宽度、高度));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
调用器(()->new PolygonDemo().start());
}
公开作废开始(){
int r=数学最小值(x0,y0)-2*间隙;
for(int i=0;i
我已经修好了。这是因为类型。

在多少个侧面它“停止工作”?“停止工作”是什么意思?不是JAVA编码器,但你确定
sin,cos
需要角度而不是弧度吗?