public void ShiftToZero(clsHeightmap Source) { int Y = 0; int X = 0; sMinMax MinMax = new sMinMax(); double dblTemp = Source.HeightScale / HeightScale; Source.MinMaxGet(MinMax); long Offset = 0; SizeCopy(Source); Offset = Convert.ToInt64(0 - MinMax.Min); for ( Y = 0; Y <= HeightData.SizeY - 1; Y++ ) { for ( X = 0; X <= HeightData.SizeX - 1; X++ ) { HeightData.Height[Y, X] = Convert.ToInt32(Convert.ToDouble(Offset + Source.HeightData.Height[Y, X]) * dblTemp); } } }
public void WaveLow(clsHeightmap Source) { int Y = 0; int X = 0; long HeightRange = 0; long HeightMin = 0; sMinMax MinMax = new sMinMax(); Source.MinMaxGet(MinMax); HeightRange = Convert.ToInt64(MinMax.Max - MinMax.Min); HeightMin = MinMax.Min; if ( HeightRange == 0.0D ) { return; } SizeCopy(Source); for ( Y = 0; Y <= HeightData.SizeY - 1; Y++ ) { for ( X = 0; X <= HeightData.SizeX - 1; X++ ) { HeightData.Height[Y, X] = (int) (((1.0D - Math.Sin((1.0D - Convert.ToInt32(Source.HeightData.Height[Y, X] - HeightMin) / HeightRange) * MathUtil.RadOf90Deg)) * HeightRange + HeightMin) * Source.HeightScale / HeightScale); } } }
public void Rescale(clsHeightmap Source, double HeightMin, double HeightMax) { int Y = 0; int X = 0; sMinMax MinMax = new sMinMax(); Source.MinMaxGet(MinMax); long HeightRange = 0; long Offset = 0; double Ratio = 0; long lngTemp = 0; SizeCopy(Source); HeightRange = Convert.ToInt64(MinMax.Max - MinMax.Min); Offset = Convert.ToInt64(0 - MinMax.Min); if ( HeightRange > 0 ) { Ratio = (HeightMax - HeightMin) / (HeightRange * HeightScale); lngTemp = (int)(HeightMin / HeightScale); for ( Y = 0; Y <= HeightData.SizeY - 1; Y++ ) { for ( X = 0; X <= HeightData.SizeX - 1; X++ ) { HeightData.Height[Y, X] = Convert.ToInt64(lngTemp + Convert.ToInt32(Convert.ToDouble(Offset + Source.HeightData.Height[Y, X]) * Ratio)); } } } else { lngTemp = (int)((HeightMin + HeightMax) / 2.0D); for ( Y = 0; Y <= HeightData.SizeY - 1; Y++ ) { for ( X = 0; X <= HeightData.SizeX - 1; X++ ) { HeightData.Height[Y, X] = lngTemp; } } } }