Ну, вы можете построить поверхность с использованием OpenGL 1.0 или OpenGL 2.0. Все, что вам нужно сделать, это нарисовать оси как линии и нарисовать поверхность как треугольники. Если у вас есть данные heightfield, вы могли бы сделать:
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
Это рисует простую ось и heightfield, все в белом цвете. Это должно быть довольно просто, чтобы расширить его отсюда.
Добро пожаловать в SO! Ваш вопрос слишком широк и относится к слишком большому числу задач, чтобы запрашивать ответы на качество. Я предлагаю реорганизовать ваш вопрос и сосредоточиться на одной части за раз. –
Привет, justnS, Спасибо. Я перефразировал свой вопрос к конкретной проблеме. –