Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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 如何绘制100边正多边形_Java_Loops_Polygon - Fatal编程技术网

Java 如何绘制100边正多边形

Java 如何绘制100边正多边形,java,loops,polygon,Java,Loops,Polygon,我试图画一个正圆形和一个100边正多边形。我能画出规则的圆: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Shapes extends JFrame implements ActionListener { private JButton button; private JPanel panel; public static void main(String[

我试图画一个正圆形和一个100边正多边形。我能画出规则的圆:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Shapes extends JFrame implements ActionListener {

    private JButton button;
    private JPanel panel;
    public static void main(String[] args){

    }    

    private void createLine(){

        setDefaultCloseOperation(EXIT-ON-CLOSE);
        Container window=getContentPane();
        window.setLayout(new FlowLayout());

        panel=new JPanel();
        panel.SetPreferredSize(new Dimension(700, 700));
        panel.setBackground(Color.white);
        window.add(panel);

        button=new JButton("OK");
        window.add(button);
        button.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event) {

        Graphics paper= panel.getGraphics();
        int r = 75;
        int x = 300;
        int y = 150;

        paper.drawOval(x,y,r,r);
    }
}
我不知道如何绘制规则的100边多边形(是否使用循环函数?)


有人能帮我吗?

你必须计算出每个角的角度,这对于正多边形中的每个角都是相同的。那么你希望每一方都有多长时间。然后运行for循环将所有点添加到多边形对象


.

您必须计算出每个角的角度,这对于正多边形中的每个角都是相同的。那么你希望每一方都有多长时间。然后运行for循环将所有点添加到多边形对象


.

您必须计算出每个角的角度,这对于正多边形中的每个角都是相同的。那么你希望每一方都有多长时间。然后运行for循环将所有点添加到多边形对象


.

您必须计算出每个角的角度,这对于正多边形中的每个角都是相同的。那么你希望每一方都有多长时间。然后运行for循环将所有点添加到多边形对象


这是创建具有n个顶点(n-1条边)的正多边形的一般解决方案。
矩形
参数用于设置边界

基本上,想法是从矩形的中心开始,围绕区域旋转到n个顶点(旋转步骤为360/n)。资料来源也可查询

公共静态多边形createPolygon(int顶点、双角度偏移、矩形r){
如果(顶点<1)抛出新的IllegalArgumentException(“顶点必须大于0”);
双步骤=2*Math.PI/顶点;
int[]x=新的int[顶点];
int[]y=新的int[顶点];
int xrad=r.宽度/2;
int yrad=r.高度/2;
对于(int i=0;i<顶点;i++){
x[i]=r.x+xrad+(int)(数学cos(角度偏移+i*步长)*xrad);
y[i]=r.y+yrad+(int)(数学sin(角度偏移+i*步长)*yrad);
}
多边形p=新多边形(x、y、顶点);
返回p;
}

这是创建具有n个顶点(n-1条边)的正多边形的一般解决方案。
矩形
参数用于设置边界

基本上,想法是从矩形的中心开始,围绕区域旋转到n个顶点(旋转步骤为360/n)。资料来源也可查询

公共静态多边形createPolygon(int顶点、双角度偏移、矩形r){
如果(顶点<1)抛出新的IllegalArgumentException(“顶点必须大于0”);
双步骤=2*Math.PI/顶点;
int[]x=新的int[顶点];
int[]y=新的int[顶点];
int xrad=r.宽度/2;
int yrad=r.高度/2;
对于(int i=0;i<顶点;i++){
x[i]=r.x+xrad+(int)(数学cos(角度偏移+i*步长)*xrad);
y[i]=r.y+yrad+(int)(数学sin(角度偏移+i*步长)*yrad);
}
多边形p=新多边形(x、y、顶点);
返回p;
}

这是创建具有n个顶点(n-1条边)的正多边形的一般解决方案。
矩形
参数用于设置边界

基本上,想法是从矩形的中心开始,围绕区域旋转到n个顶点(旋转步骤为360/n)。资料来源也可查询

公共静态多边形createPolygon(int顶点、双角度偏移、矩形r){
如果(顶点<1)抛出新的IllegalArgumentException(“顶点必须大于0”);
双步骤=2*Math.PI/顶点;
int[]x=新的int[顶点];
int[]y=新的int[顶点];
int xrad=r.宽度/2;
int yrad=r.高度/2;
对于(int i=0;i<顶点;i++){
x[i]=r.x+xrad+(int)(数学cos(角度偏移+i*步长)*xrad);
y[i]=r.y+yrad+(int)(数学sin(角度偏移+i*步长)*yrad);
}
多边形p=新多边形(x、y、顶点);
返回p;
}

这是创建具有n个顶点(n-1条边)的正多边形的一般解决方案。
矩形
参数用于设置边界

基本上,想法是从矩形的中心开始,围绕区域旋转到n个顶点(旋转步骤为360/n)。资料来源也可查询

公共静态多边形createPolygon(int顶点、双角度偏移、矩形r){
如果(顶点<1)抛出新的IllegalArgumentException(“顶点必须大于0”);
双步骤=2*Math.PI/顶点;
int[]x=新的int[顶点];
int[]y=新的int[顶点];
int xrad=r.宽度/2;
int yrad=r.高度/2;
对于(int i=0;i<顶点;i++){
x[i]=r.x+xrad+(int)(数学cos(角度偏移+i*步长)*xrad);
y[i]=r.y+yrad+(int)(数学sin(角度偏移+i*步长)*yrad);
}
多边形p=新多边形(x、y、顶点);
返回p;
}

您必须使用几何数学计算出此类多边形的所有100个顶点,并逐行绘制。你可以尝试
for
循环(这不是一个函数),但这里使用的循环并不重要。我意识到我可以使用for循环,但我不知道如何应用它。你必须使用几何数学计算出此类多边形的所有100个顶点,并逐行绘制。你可以尝试
for
循环(这不是一个函数),但这里使用的循环并不重要。我意识到我可以使用for循环,但我不知道如何应用它。你必须使用几何数学计算出此类多边形的所有100个顶点,并逐行绘制。你可以尝试
for
循环(这不是一个函数),但这里使用的循环并不重要。我意识到我可以使用for循环,但我不知道如何应用它。你必须使用几何体
public static Polygon createPolygon(int vertices, double angleOffset, Rectangle r) {
        if (vertices < 1) throw new IllegalArgumentException ("Vertices must be > 0");
        double step = 2 * Math.PI / vertices;
        int[] x = new int[vertices];
        int[] y = new int[vertices];
        int xrad = r.width / 2;
        int yrad = r.height / 2;
        for (int i = 0; i < vertices; i++) {
            x[i] = r.x + xrad + (int) (Math.cos(angleOffset + i * step) * xrad);
            y[i] = r.y + yrad + (int) (Math.sin(angleOffset + i * step) * yrad);
        }
        Polygon p = new Polygon(x, y, vertices);
        return p;
    }