public void WaveHigh(clsHeightmap Source) { var Y = 0; var X = 0; long HeightRange = 0; long HeightMin = 0; var MinMax = new sMinMax(); Source.MinMaxGet(ref 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++) { var val = ((Math.Sin((Source.HeightData.Height[Y, X] - HeightMin) / (double)HeightRange * MathUtil.RadOf90Deg) * HeightRange + HeightMin) * Source.HeightScale / HeightScale) .ToLong(); HeightData.Height[Y, X] = val; } } }
public void MinMaxGet(ref sMinMax MinMax_Output) { long HeightMin = 0; long HeightMax = 0; long lngTemp = 0; var Y = 0; var X = 0; if (!(HeightData.SizeY == 0 | HeightData.SizeX == 0)) { HeightMin = HeightData.Height[0, 0]; HeightMax = HeightData.Height[0, 0]; for (Y = 0; Y <= HeightData.SizeY - 1; Y++) { for (X = 0; X <= HeightData.SizeX - 1; X++) { lngTemp = HeightData.Height[Y, X]; if (lngTemp < HeightMin) { HeightMin = lngTemp; } if (lngTemp > HeightMax) { HeightMax = lngTemp; } } } } MinMax_Output.Min = HeightMin; MinMax_Output.Max = HeightMax; }
public void Rescale(clsHeightmap Source, double HeightMin, double HeightMax) { var Y = 0; var X = 0; var MinMax = new sMinMax(); Source.MinMaxGet(ref 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 = (HeightMin / HeightScale).ToLong(); 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 = ((HeightMin + HeightMax) / 2.0D).ToLong(); for (Y = 0; Y <= HeightData.SizeY - 1; Y++) { for (X = 0; X <= HeightData.SizeX - 1; X++) { HeightData.Height[Y, X] = lngTemp; } } } }
public void ShiftToZero(clsHeightmap Source) { var Y = 0; var X = 0; var MinMax = new sMinMax(); var dblTemp = Source.HeightScale / HeightScale; Source.MinMaxGet(ref 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 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 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; } } } }
public void MinMaxGet(sMinMax MinMax_Output) { long HeightMin = 0; long HeightMax = 0; long lngTemp = 0; int Y = 0; int X = 0; if ( !(HeightData.SizeY == 0 | HeightData.SizeX == 0) ) { HeightMin = HeightData.Height[0, 0]; HeightMax = HeightData.Height[0, 0]; for ( Y = 0; Y <= HeightData.SizeY - 1; Y++ ) { for ( X = 0; X <= HeightData.SizeX - 1; X++ ) { lngTemp = HeightData.Height[Y, X]; if ( lngTemp < HeightMin ) { HeightMin = lngTemp; } if ( lngTemp > HeightMax ) { HeightMax = lngTemp; } } } } MinMax_Output.Min = HeightMin; MinMax_Output.Max = HeightMax; }
public void WaveLow(clsHeightmap Source) { sMinMax max = new sMinMax(); Source.MinMaxGet(ref max); long num2 = max.Max - max.Min; long min = max.Min; if (num2 != 0.0) { this.SizeCopy(Source); int num5 = this.HeightData.SizeY - 1; for (int i = 0; i <= num5; i++) { int num6 = this.HeightData.SizeX - 1; for (int j = 0; j <= num6; j++) { this.HeightData.Height[i, j] = (long) Math.Round((double) (((((1.0 - Math.Sin((1.0 - (((double) (Source.HeightData.Height[i, j] - min)) / ((double) num2))) * 1.5707963267948966)) * num2) + min) * Source.HeightScale) / this.HeightScale)); } } } }
public void ShiftToZero(clsHeightmap Source) { sMinMax max = new sMinMax(); double num = Source.HeightScale / this.HeightScale; Source.MinMaxGet(ref max); this.SizeCopy(Source); long num2 = 0L - max.Min; int num5 = this.HeightData.SizeY - 1; for (int i = 0; i <= num5; i++) { int num6 = this.HeightData.SizeX - 1; for (int j = 0; j <= num6; j++) { this.HeightData.Height[i, j] = (long) Math.Round((double) ((num2 + Source.HeightData.Height[i, j]) * num)); } } }
public void Rescale(clsHeightmap Source, double HeightMin, double HeightMax) { long num2; int num5; int num6; sMinMax max = new sMinMax(); Source.MinMaxGet(ref max); this.SizeCopy(Source); long num = max.Max - max.Min; long num3 = 0L - max.Min; if (num > 0L) { double num4 = (HeightMax - HeightMin) / (num * this.HeightScale); num2 = (long) Math.Round((double) (HeightMin / this.HeightScale)); int num7 = this.HeightData.SizeY - 1; for (num6 = 0; num6 <= num7; num6++) { int num8 = this.HeightData.SizeX - 1; num5 = 0; while (num5 <= num8) { this.HeightData.Height[num6, num5] = num2 + ((long) Math.Round((double) ((num3 + Source.HeightData.Height[num6, num5]) * num4))); num5++; } } } else { num2 = (long) Math.Round((double) ((HeightMin + HeightMax) / 2.0)); int num9 = this.HeightData.SizeY - 1; for (num6 = 0; num6 <= num9; num6++) { int num10 = this.HeightData.SizeX - 1; for (num5 = 0; num5 <= num10; num5++) { this.HeightData.Height[num6, num5] = num2; } } } }
public void MinMaxGet(ref sMinMax MinMax_Output) { long num; long num2; if (!((this.HeightData.SizeY == 0) | (this.HeightData.SizeX == 0))) { num2 = this.HeightData.Height[0, 0]; num = this.HeightData.Height[0, 0]; int num6 = this.HeightData.SizeY - 1; for (int i = 0; i <= num6; i++) { int num7 = this.HeightData.SizeX - 1; for (int j = 0; j <= num7; j++) { long num3 = this.HeightData.Height[i, j]; if (num3 < num2) { num2 = num3; } if (num3 > num) { num = num3; } } } } MinMax_Output.Min = num2; MinMax_Output.Max = num; }