【问题标题】:How to draw an 100 sided regular polygon如何绘制一个 100 边的正多边形
【发布时间】:2015-04-09 18:32:36
【问题描述】:

我正在尝试绘制一个正圆和一个 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 边的多边形(你使用循环函数吗?)

有人可以帮帮我吗?

【问题讨论】:

  • 您必须使用几何数学来计算出此类多边形的所有 100 个顶点并逐行绘制。你可以试试for循环(不是函数),但是这里使用的循环并不重要。
  • 我意识到我可以使用 for 循环,但我不知道如何应用它

标签: java loops polygon


【解决方案1】:

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

基本上,这个想法是从矩形的中心开始,围绕该区域旋转到 n 个顶点(360/n 作为旋转步长)。源码也可以here

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;
    }

【讨论】:

    【解决方案2】:

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

    Take a look at this example.

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 2020-02-09
      • 2015-09-30
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多