public WindMap(int xSize, int ySize, TerrainMap terrainmap, TemperatureMap temperaturemap, int month) { this.vectormap = new Map <Vector2>(xSize, ySize); this.grid = new Wind[xSize, ySize]; this.xSize = xSize; this.ySize = ySize; this.month = month; TradeWindGenerator twg = new TradeWindGenerator(xSize, ySize); RecursiveWindGenerator rwg = new RecursiveWindGenerator(temperaturemap); Map <Vector2> tradeWindMap = twg.generateTradeWindMap(terrainmap, month); Map <Vector2> recursiveWindMap = rwg.generateRecursiveWind(); //blend float tw; IFunction combination = new ParabolaFunction(4, -10f, 4.15f); for (int x = 0; x < xSize; x++) { for (int y = 0; y < ySize; y++) { tw = combination.calculate(terrainmap.grid[x, y].height); tw = Mathf.Min(tw, 1); tw = Mathf.Max(tw, 0); vectormap.setAt(x, y, recursiveWindMap.grid[x, y] * (1.2f) * (1 - tw) + tradeWindMap.grid[x, y] * tw); } } smoothConvert(8, terrainmap); }
private float getLandTemperature(float latitude, int month) { IFunction par = new ParabolaFunction((-4f / 555f), (40f / 111f), (1140f / 37f)); return(par.calculate(latitude + Latitude.monthlyShift(month + 6, landMonthlyDelta) + 3 * landMonthlyDelta)); }
private float getSeaTemperature(float latitude, int month) { IFunction par = new ParabolaFunction((-1f / 252f), (5f / 36f), (275f / 14f)); return(par.calculate(latitude + Latitude.monthlyShift(month + 6, seaMonthlyDelta) + 3 * seaMonthlyDelta)); }