calculate normals via cross product
perlin noise terrain gen