Android 3D Surface Plot - PullRequest
       5

Android 3D Surface Plot

4 голосов
/ 21 января 2012

Мое требование состоит в том, чтобы создать трехмерный график поверхности (также должен отображать ось x y z) из списка значений точек данных (x y z). 3D визуализация должна быть сделана для ANDROID.

Мои входы : в настоящее время планируем использовать open gl 1.0 и java. Я также рассматриваю пакет Adore3d, min3d и rgl, который использует open gl 1.0. Хорошо разбирается в Java, но новичок в 3D-программировании.
Сроки: 2 месяца

Я хотел бы знать, как лучше всего это сделать? Является ли opengl 1.0 хорошим для построения трехмерной поверхности? Какие-нибудь другие пакеты / библиотеки, которые можно использовать с Android?

1 Ответ

3 голосов
/ 24 января 2012

Ну, вы можете построить поверхность, используя 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

Это рисует простые оси и поле высоты, все в белом цвете.Это должно быть довольно просто, чтобы расширить его отсюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...