用Java写一个n边形划分
时间: 2023-03-16 15:44:47 浏览: 140
我可以提供一些普遍的思路。首先,你可以使用画图函数来绘制一个n边形,可以使用java.awt.Graphics类中的drawPolygon()函数。然后,你可以使用像Math.cos()和Math.sin()这样的函数,计算每条边的起点和终点的坐标,以便用drawLine函数将它们连接起来。最后,可以使用fillPolygon方法将它填充颜色。
相关问题
java绘制一个n边形
可以使用Java中的Graphics2D类进行绘制,下面是绘制一个正n边形的示例代码:
```
import java.awt.*;
import javax.swing.*;
public class Ngon extends JPanel {
private int n; // 边数
private int x; // 中心点x坐标
private int y; // 中心点y坐标
private int r; // 外接圆半径
public Ngon(int n, int x, int y, int r) {
this.n = n;
this.x = x;
this.y = y;
this.r = r;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// 计算多边形各个顶点坐标
Point[] points = new Point[n];
double angle = 2 * Math.PI / n;
for (int i = 0; i < n; i++) {
int px = (int) (x + r * Math.cos(i * angle));
int py = (int) (y + r * Math.sin(i * angle));
points[i] = new Point(px, py);
}
// 绘制多边形
g2d.setColor(Color.BLACK);
g2d.setStroke(new BasicStroke(2));
g2d.drawPolygon(getXPoints(points), getYPoints(points), n);
}
// 将Point数组转换为x坐标数组
private int[] getXPoints(Point[] points) {
int[] xpoints = new int[n];
for (int i = 0; i < n; i++) {
xpoints[i] = points[i].x;
}
return xpoints;
}
// 将Point数组转换为y坐标数组
private int[] getYPoints(Point[] points) {
int[] ypoints = new int[n];
for (int i = 0; i < n; i++) {
ypoints[i] = points[i].y;
}
return ypoints;
}
public static void main(String[] args) {
JFrame frame = new JFrame("Ngon");
frame.add(new Ngon(6, 200, 200, 100)); // 绘制一个正六边形,中心点坐标为(200, 200),外接圆半径为100
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
```
运行代码后会弹出一个窗口,显示绘制的多边形。可以根据需要修改构造函数中的参数来绘制不同的n边形。
java绘制一个n边形,尖角朝上
下面是一个绘制n边形(尖角朝上)的Java代码示例:
```java
import java.awt.*;
import javax.swing.*;
public class Ngon extends JPanel {
private int n;
public Ngon(int n) {
this.n = n;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int[] xPoints = new int[n];
int[] yPoints = new int[n];
int cx = getWidth() / 2;
int cy = getHeight() / 2;
int r = Math.min(cx, cy) - 5;
for (int i=0; i<n; i++) {
double theta = i * 2 * Math.PI / n;
xPoints[i] = cx + (int) (r * Math.sin(theta));
yPoints[i] = cy - (int) (r * Math.cos(theta));
}
g.drawPolygon(xPoints, yPoints, n);
}
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
JFrame frame = new JFrame("Ngon");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Ngon ngon = new Ngon(n);
ngon.setPreferredSize(new Dimension(400, 400));
frame.getContentPane().add(ngon);
frame.pack();
frame.setVisible(true);
}
}
```
使用方法:
在命令行中输入`java Ngon n`,其中n是要绘制的n边形的边数。例如,要绘制一个六边形,可以输入`java Ngon 6`。