Java 如何绘制100边正多边形
我试图画一个正圆形和一个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[
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;
}