gpt4 book ai didi

java - 如何在 Java 中创建 3D 标签云

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:04 27 4
gpt4 key购买 nike

我需要关于如何在 Java (Swing) 中创建 3D 标签云的建议/想法(完全像这里显示的那样:http://www.adesblog.com/2008/08/27/wp-cumulus-plugin/), 你能帮忙吗?

最佳答案

我会选择 Swing 和 Java2D 或 OpenGL (JOGL)。

我用过几次 OpenGL,使用 JOGL 的扩展(TextRenderer)很容易绘制文本。

如果您选择 Swing,那么困难的部分将是实现 3D 转换。你必须编写某种粒子系统。粒子必须驻留在 3D 球体上。您个人将负责进行任何 3D 转换,但使用正交投影是微不足道的。所以这是一个很好的练习 - 你需要的是这里:Wiki's spherical coord sys在这里 3d to 2d projection .

完成所有转换后,只剩下绘图。 Java2D 和 Swing 对此有非常方便的 API。它会归结为选择字体大小并在给定坐标处绘制文本。具有覆盖 paintComponent 方法的自定义 JPanel 足以开始和结束。

至于第二个选择,最难的部分是 OpenGL API 本身。它是过程性的,所以如果你主要熟悉 Java,你将很难使用非 OO 的东西。它可以习惯,老实说,它可以带来很多返回,因为您可以用它做很多事情。如果您选择了 OpenGL,那么您将免费获得所有 3D 变换,但仍然必须自己将球坐标系转换为笛卡尔坐标系(第一篇 wiki 文章仍然有帮助)。之后,只需使用一些文本绘制类,例如 JOGL 发行版附带的 TextRenderer

因此 OpenGL 可以帮助您进行 View 投影计算并且是硬件加速的。 Java2D 需要更多的数学知识才能使用,但在我看来,这种方法似乎更容易一些。哦,顺便说一句——Java2D 试图在内部使用任何图形加速(OpenGL 或 DirectDraw)。因此,您可以避免某些低级问题。

对于这两个选项,您还需要将鼠标坐标 s 绑定(bind)到球体的旋转速度。无论是 Java2D 还是 OpenGL,代码看起来都非常相似。只需将与面板中心相关的鼠标坐标映射到某个速度 vector 。在绘图时,您可以使用 vector 相应地旋转球体。

还有一件事:如果您想尝试 OpenGL,我建议:Processing language在麻省理工学院创建,专门用于丰富的图形小程序。他们的 3D API 与 OpenGL 几乎相同,这并非巧合,但没有太多麻烦。因此,如果您想要最快的原型(prototype),那是最好的选择。咨询this discussion thread实际例子。注意:处理是用 Java 编写的。

关于java - 如何在 Java 中创建 3D 标签云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com