【问题标题】:Drawing Points in JavaJava中的绘图点
【发布时间】:2016-01-19 13:43:57
【问题描述】:

首先是我的问题。

我有一个包含 6 个点的数组,没有给出 x 或 y,他们希望以预定义的方式连接,这在数据库/哈希图/数组中也是可用的。

如何让 Java 在程序上绘制六边形甚至更大的结构? something like this

这里的关键是我只知道应该连接java的哪些点必须确定连接的长度......

最后,我将链接一些它最终应该看起来如何的东西,以便您了解复杂性。 See every circle only as a point for now

感谢您的帮助,抱歉我的英语不好。


编辑

好吧,我的问题似乎不够清楚。

我有 7500 个点和 14000 个连接。

每个连接连接 2 个固定点,一个点可以有多个连接或只有一个。 我想显示这个但是怎么显示?

【问题讨论】:

  • 听起来您要么需要使用已建立的库——我以前使用过 JavaGeom; geom-java.sourceforge.net - 或者您需要从头开始设计所有这些。六边形在这里不是问题 - 定义要表示的形状中有多少点是。您需要一个矩阵来存储一组可能的坐标,该坐标也能够定义使用的坐标。
  • 我有点知道我最终将如何显示它对我来说最大的问题是如何计算每个点/线的位置?我怎样才能让 java 寻找每个连接并认为它最终会是最好的?我知道递归将是最好的,但是需要什么算法来确定连接必须有多长以及点必须在哪里?
  • 如果你知道六边形的宽度(例如),并且它有等长的边,那么六边形的边就是宽度除以2。这使得它相对容易工作其余点所在的位置。您还需要使用 Math.toRadians() 来计算角度 (360 / 6)。
  • 创建一个数据类型来处理这种特定类型的形状。甚至可以扩展Shape。据我所知,这个问题没有简单的答案。

标签: procedural-generation


【解决方案1】:

你应该处理逻辑。将数据保存在某处并显示如下示例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Main extends JPanel {
   public void paintComponent(Graphics g) {
      super.paintComponent(g);
      Polygon p = new Polygon();
      for (int i = 0; i < 5; i++)
      p.addPoint((int) 
      (100 + 50 * Math.cos(i * 2 * Math.PI / 5)),
      (int) (100 + 50 * Math.sin(i * 2 * Math.PI / 5)));
      g.drawPolygon(p);
   }
   public static void main(String[] args) {
      JFrame frame = new JFrame();
      frame.setTitle("Polygon");
      frame.setSize(350, 250);
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
         }
      });
      Container contentPane = frame.getContentPane();
      contentPane.add(new Main());
      frame.setVisible(true);
   }
}

【讨论】:

  • 是的,我可以用这个画一个圆圈,但我需要一个复杂的几何形状,因为我编辑了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2011-07-19
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 2010-11-26
相关资源
最近更新 更多