float3Data Function3DYcoord::getFloat3Data(int x, int y, int z, int sx, int sy, int sz) { float3Data result(sx,float2Data(sy,float1Data(sz,0.0))); for(int localX = 0; localX < sx; ++localX) for(int localY = 0; localY < sy; ++localY) for(int localZ = 0; localZ < sz; ++localZ) result[localX][localY][localZ] = y+localY; return result; }
float3Data Function3DSimplex::getFloat3Data(int x, int y, int z, int sx, int sy, int sz) { //world coords float3Data result(sx,float2Data(sy,float1Data(sz,0.0))); for(int x2 = x; x2 < x+sx; ++x2) for(int y2 = y; y2 < y+sy; ++y2) for(int z2 = z; z2 < z+sz; ++z2) result[x2-x][y2-y][z2-z] = noise.get(x2, y2, z2); return result; }
float3Data Function3DAdd::getFloat3Data(int x, int y, int z, int sx, int sy, int sz) { float3Data dataA = funcA->getFloat3Data(x,y,z,sx,sy,sz); float3Data dataB = funcB->getFloat3Data(x,y,z,sx,sy,sz); float3Data result(sx,float2Data(sy,float1Data(sz,0.0))); for(int i = 0; i < sx; ++i) for(int j = 0; j < sy; ++j) for(int k = 0; k < sz; ++k) result[i][j][k] = dataA[i][j][k] + dataB[i][j][k]; return result; }
float2Data Function2DSimplex::getFloat2Data(int x, int z, int sx, int sz) { //world coords float2Data result(sx,float1Data(sz,0.0)); for(int localX = 0; localX < sx; ++localX) for(int localZ = 0; localZ < sz; ++localZ) { vec2d pos((x+localX)/scale,(z+localZ)/scale); result[localX][localZ] = min + (max-min)*((glm::simplex(pos)+1)*0.5); //result[localX][localZ] = valSimplex2D(pos.x,pos.y); more precision, slower } return result; }