我的要求是从数据点列表(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一起使用的任何其他包/库吗?
答案 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表面图。
许多配置都是可能的,包括绘制线框,渐变色图,轮廓和实时更新。
披露,我是scichart团队的技术负责人