Java-排列不规则形状 我试图开发一种java代码,其中规则/不规则形状将以这种方式排列,以便我可以利用整个页面考虑。我想做一个应用程序,将试图找到所有可能的方式来安排到给定的区域自定义形状,以便我可以利用我的区域尽可能多。我已经阅读了使用类生成概率的步骤。此外,我还制作了一个小片段,我知道它不能像我说的那样工作,但我想安排这些形状。任何算法或链接将不胜感激
这是我的密码:Java-排列不规则形状 我试图开发一种java代码,其中规则/不规则形状将以这种方式排列,以便我可以利用整个页面考虑。我想做一个应用程序,将试图找到所有可能的方式来安排到给定的区域自定义形状,以便我可以利用我的区域尽可能多。我已经阅读了使用类生成概率的步骤。此外,我还制作了一个小片段,我知道它不能像我说的那样工作,但我想安排这些形状。任何算法或链接将不胜感激,java,swing,graphics2d,Java,Swing,Graphics2d,这是我的密码: import javax.swing.*; import java.awt.*; import java.util.Random; public class DrawGraph { JPanel panel; JFrame frame; Random rand; public DrawGraph() { frame = new JFrame("Graph"); rand = new Random();
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class DrawGraph {
JPanel panel;
JFrame frame;
Random rand;
public DrawGraph()
{
frame = new JFrame("Graph");
rand = new Random();
panel = new JPanel(){
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g2)
{
super.paintComponents(g2);
Graphics2D g = (Graphics2D) g2;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.white);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black);
int i,j,x=0,y=0;
int width = panel.getWidth();
int height = panel.getHeight();
int intervalX = (int)Math.round(width*0.02);
int intervalY = (int)Math.round(height*0.02);
for(i=0,j=0;i<=width || j<=height;i+=intervalX,j+=intervalY)
{
g.drawLine(x, j, width, j);
g.drawLine(i,y,i,height);
}
g.setColor(Color.GREEN);
for(i=1;i<=5;i++)
generateShape(g);
}
};
frame.setSize(400,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setVisible(true);
}
public void generateShape(Graphics2D g)
{
//demo shape
int radius = rand.nextInt(200);
int originX,originY;
originX = rand.nextInt(300-10) + 10;
originY = rand.nextInt(300-10) + 10;
g.setStroke(new BasicStroke(5));
g.drawOval(originX, originY, radius, radius);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new DrawGraph();
}
}
以下是输出:
我想尽可能多地利用剩余的空间。
这听起来像是一个NP-难或NP-完全问题。@Kayaman我不明白你想说什么?他想说的是“尝试找到所有可能的方法将自定义形状排列到给定区域”是无法通过编写计算机程序解决的问题,或者至少在固定时间内可以解决的问题。这实在太多了思考的可能性,程序可以终止没有固定的条件。但我的案例不能与IDE中提供的拖放功能相匹配吗?想想这个。你知道如何重新安排内容,使其占据屏幕,如何将其输入计算机,你能提出一个标准或条件吗?