class Terrain { int wid, dep; float[][] altitude; float fullWid, fullDep; float divSize; Terrain(int _wid, int _dep, float _divSize) { wid = _wid; dep = _dep; divSize = _divSize; fullWid = wid*(divSize-1); fullDep = dep*(divSize-1); altitude = new float[wid][dep]; for (int i=0;i=wid-1) ix0=wid-2; int ix1 = ix0 + 1; int iz0 = (int)(_z/divSize); if (iz0<0) iz0=0; if (iz0>=dep-1) iz0=dep-2; int iz1 = iz0 + 1; // code from: // Finding the altitude of a point on a 3D grid.doc float yA = altitude[ix0][iz0]; float yB = altitude[ix1][iz0]; float yC = altitude[ix0][iz1]; float yD = altitude[ix1][iz1]; float z = _z - iz0*divSize; float zDivSizeZ = z/divSize; float y1 = yA + (yC-yA)*zDivSizeZ; float m = ((yB + (yD-yB)*zDivSizeZ)-(yA + (yC-yA)*zDivSizeZ))/divSize; float x = _x - ix0*divSize; float yp = y1 + m * x; // definition of a line return yp; } void draw() { stroke(64,32,0); fill(128,64,0); beginShape(QUADS); for (int i=0;i