用Java绘制3D函数和点

时间:2013-12-23 17:13:32

标签: java 3d plot

我需要的只是3D中的功能图,表面上有一些点。我怎样才能实现它?

起初我尝试了 jzy3d ,但事实证明这对于这样一个基本任务来说太费力了(特别是因为jzy3d缺少代码示例和JOGL的依赖性可能很麻烦)。所以我尝试了 Java Surface Plot ,对于功能表面部分 - 它是完美的。但是可以添加(x,y,z)点吗?我猜不会。在这种情况下,我可以使用其他库吗?

我知道这个问题可能会让人感到偏离主题,但是这样一个简单的绘图是一个基本的功能,this答案已经有2年了,所以..也许现在有更好的东西了?

3 个答案:

答案 0 :(得分:3)

Orson Charts是一个新的(专有)库,它将绘制没有JOGL依赖关系的表面图表(它包含一个基于Java2D的软件渲染器,因此除标准Java运行时之外没有依赖关系)。表面渲染器从函数y = f(x,z)中获取样本,因此您的需求可能存在问题:

  

但是可以添加(x,y,z)点吗?

但是,调整代码以使用这些数据并不困难,因此如果Orson Charts看起来像您可以使用的那样,请与我联系。

答案 1 :(得分:2)

我对stackoverflow很新,所以也许我会带来一些新的(可能是旧的)视图。

您可以将3D点转换为2D点,我会以一种方式向其提交代码片段(但有很多)

//point a (3D)
double ax = 3;
double ay = 4;
double az = 3;

//point b (2D)
double bx = 0;
double by = 0;

//assumtions
double cx = 0; //offset
double cz = 0; //offset

double scalex = 0.5;
double scalez = 0.5;

//trafo 3D -> 2D
bx = scalex * ax + cz;
by = scalez * az + cz;

我指的是http://en.wikipedia.org/wiki/3D_projection

对所有点进行此操作,您将看到绘制的图表。

答案 2 :(得分:1)

有Jzy3d examples on Github显示如何绘制曲面和散点图。

您将看到maven配置非常简单,因为您应该简单地声明对jzy3d的依赖关系(JOGL被传递导入):

<dependencies>
    <dependency>
        <groupId>org.jzy3d</groupId>
        <artifactId>jzy3d-api</artifactId>
        <version>0.9.2-SNAPSHOT</version>
    </dependency>
</dependencies>

您只需要声明Jzy3d的存储库如下

<repositories>
  <repository>
     <id>jzy3d-snapshots</id>
     <name>Jzy3d Snapshots</name>
     <url>http://maven.jzy3d.org/snapshots</url>
  </repository>
  <repository>
     <id>jzy3d-releases</id>
     <name>Jzy3d Releases</name>
     <url>http://maven.jzy3d.org/releases</url>
  </repository>

如果给定的示例不够,您可能还需要查看developer guide