Android 3D Surface Plot

时间:2012-01-21 04:32:33

标签: android opengl 3d

我的要求是从数据点列表(x y z)创建一个三维曲面图(也应该显示x y z轴)。三维可视化应该在ANDROID上完成。

我的输入:目前正计划使用open gl 1.0和java。我也在考虑使用open gl 1.0的Adore3d,min3d和rgl包。擅长java,但是3d编程的新手 时限:2个月

我想知道最好的方法吗? opengl 1.0是否适用于3D表面绘图?可以与Android一起使用的任何其他包/库吗?

2 个答案:

答案 0 :(得分:3)

嗯,您可以使用OpenGL 1.0或OpenGL 2.0绘制曲面。您需要做的就是将轴绘制为线条并将曲面绘制为三角形。如果你有高地数据,你可以这样做:

float[][] surface;
int width, height; // 2D surface data and it's dimensions

GL.glBegin(GL.GL_LINES);
GL.glVertex3f(0, 0, 0); // line starting at 0, 0, 0
GL.glVertex3f(width, 0, 0); // line ending at width, 0, 0
GL.glVertex3f(0, 0, 0); // line starting at 0, 0, 0
GL.glVertex3f(0, 0, height); // line ending at 0, 0, height
GL.glVertex3f(0, 0, 0); // line starting at 0, 0, 0
GL.glVertex3f(0, 50, 0); // line ending at 0, 50, 0 (50 is maximal value in surface[])
GL.glEnd();
// display the axes

GL.glBegin(GL.GL_TRIANGLES);
for(int x = 1; x < width; ++ x) {
    for(int y = 1; y < height; ++ y) {
        float a = surface[x - 1][y - 1];
        float b = surface[x][y - 1];
        float c = surface[x][y];
        float d = surface[x - 1][y];
        // get four points on the surface (they form a quad)

        GL.glVertex3f(x - 1, a, y - 1);
        GL.glVertex3f(x, b, y - 1);
        GL.glVertex3f(x, c, y);
        // draw triangle abc

        GL.glVertex3f(x - 1, a, y - 1);
        GL.glVertex3f(x, c, y);
        GL.glVertex3f(x - 1, d, y);
        // draw triangle acd
    }
}
GL.glEnd();
// display the data

绘制简单的轴和高度场,均为白色。从这里扩展它应该非常简单。

答案 1 :(得分:-1)

回答问题的第二部分:

  

可以与Android一起使用的其他任何包/库吗?

是的,现在可以使用SciChart绘制Android 3D表面图。

许多配置都是可能的,包括绘制线框,渐变色图,轮廓和实时更新。

Android 3D Surface Plot

披露,我是scichart团队的技术负责人