# Smooothing out Z height with sin()?

Hello I have a sketch here I got watching the great Dan S. , I altered his Perlin noise terrain with some color now I want to be able to get the terrain to smooth out after going into the more extreme levels of z height. Could I put a sin function somewhere in the terrain for loop, I think that’s what is giving the z its height. any help would be greatly appreciated thank you!!!

``````int cols,rows;
int scl = 80;

int w = 10000; // where the vertexes start
int h = 40000;

float [][] terrain;

float flying = 0;
float diff = 0;

float deltaH, deltaS, f;
int nbPts;
PVector[] pts;

void setup() {
fullScreen(P3D);
// size(600, 600, P3D);
smooth();
cols = w / scl;
rows = h / scl;
terrain = new float[cols][rows];
colorMode(HSB, 3);

}

void draw() {

flying -= 0.002; // speed of your fly over
diff -= .0002;

float yoff = flying; // this is what calcuates the infinty for the scene
for (int y = 0; y < rows; y++) {
float xoff = flying;
for (int x = 0; x < cols; x++) {
terrain[x][y] = map(noise(xoff/2, yoff), 0, 1, -diff , 2000);
xoff += diff;
}
yoff += diff/2;
}

f = float(frameCount);
//stroke(1+cos(deltaH-f/280), 1+sin(deltaS+f/220), 2, .15);
for(int i = 0; i < nbPts; i ++){
pts[i].x += random(-1.5, 3);
pts[i].y += random(-3, 3);
}

background(0);
stroke(255);
// noFill();

translate(width/2, height/20+2000);
rotateX(PI/3);
//frameRate(1);
// fill(200,0,0);
translate(-w/2, -h);
for (int y =0; y < rows-1; y++) {
beginShape(TRIANGLE_STRIP);
for (int x = 0; x < cols; x++) {
stroke(1+cos(deltaH-f/140), 1+sin(deltaS+f/220), 2, 100);
noFill();
vertex(x*scl, y*scl, terrain[x][y]); // this is what is drawn / mess with
vertex(x*scl, (y+1)*scl, terrain[x][y+1]); // this is what is drawn / mess with
//rect(x*scl, y*scl, scl, scl);
}
endShape();
}

}
``````