rendered paste body public void setData (double[][][] data) {
this.data = data;
normals = new Vector[data.length][data[0].length][2];
for (int j = 0; j < data.length - 1; j++) {
for (int i = 0; i < data[j].length - 1; i++) {
Vector uu = Vector.sub(
new Vector(data[j][i][0], data[j][i][1], data[j][i][2]),
new Vector(data[j+1][i][0], data[j+1][i][1], data[j+1][i][2]), null);
Vector vv = Vector.sub(
new Vector(data[j+1][i+1][0], data[j+1][i+1][1], data[j+1][i+1][2]),
new Vector(data[j+1][i][0], data[j+1][i][1], data[j+1][i][2]), null);
normals[j][i][0] = Vector.crossProduct(uu, vv, null);
Vector.norm(normals[j][i][0], normals[j][i][0]);
uu = Vector.sub(
new Vector(data[j+1][i+1][0], data[j+1][i+1][1], data[j+1][i+1][2]),
new Vector(data[j][i+1][0], data[j][i+1][1], data[j][i+1][2]), null);
vv = Vector.sub(
new Vector(data[j][i][0], data[j][i][1], data[j][i][2]),
new Vector(data[j][i+1][0], data[j][i+1][1], data[j][i+1][2]), null);
normals[j][i][1] = Vector.crossProduct(uu, vv, null);
Vector.norm(normals[j][i][1], normals[j][i][1]);
}
}
}
public double[][][] getData () {
return this.data;
}
void draw(GLDrawable drawable) {
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
if (getStyle().drawsFill) {
GLTools.setColor(gl, getStyle().getFillColor());
gl.glEnable(GL.GL_LIGHTING);
gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE,
getStyle().getFillColor().getComponents(null));
for (int j = 0; j < data.length - 1; j++) {
gl.glBegin(GL.GL_TRIANGLES);
for (int i = 0; i < data[j].length - 1; i++) {
gl.glNormal3d(normals[j][i][0].x, normals[j][i][0].y, normals[j][i][0].z);
gl.glVertex3dv(data[j][i]);
gl.glVertex3dv(data[j+1][i]);
gl.glVertex3dv(data[j+1][i+1]);
gl.glNormal3d(normals[j][i][1].x, normals[j][i][1].y, normals[j][i][1].z);
gl.glVertex3dv(data[j+1][i+1]);
gl.glVertex3dv(data[j][i+1]);
gl.glVertex3dv(data[j][i]);
}
gl.glEnd();
}
}