Exemple #1
0
        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;
                }
            }
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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;
                    }
                }
            }
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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);
                }
            }
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #7
0
        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;
                    }
                }
            }
        }
Exemple #8
0
        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;
        }
Exemple #9
0
 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));
             }
         }
     }
 }
Exemple #10
0
 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));
         }
     }
 }
Exemple #11
0
 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;
             }
         }
     }
 }
Exemple #12
0
 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;
 }