using System.Diagnostics; namespace LibNoise.Operator { /// /// Provides a noise module that applies a scaling factor and a bias to the output /// value from a source module. [OPERATOR] /// public class ScaleBias : ModuleBase { #region Constructors /// /// Initializes a new instance of ScaleBias. /// public ScaleBias() : base(1) { Scale = 1; } /// /// Initializes a new instance of ScaleBias. /// /// The input module. public ScaleBias(ModuleBase input) : base(1) { Modules[0] = input; Scale = 1; } /// /// Initializes a new instance of ScaleBias. /// /// The scaling factor to apply to the output value from the source module. /// The bias to apply to the scaled output value from the source module. /// The input module. public ScaleBias(double scale, double bias, ModuleBase input) : base(1) { Modules[0] = input; Bias = bias; Scale = scale; } #endregion #region Properties /// /// Gets or sets the bias to apply to the scaled output value from the source module. /// public double Bias { get; set; } /// /// Gets or sets the scaling factor to apply to the output value from the source module. /// public double Scale { get; set; } #endregion #region ModuleBase Members /// /// Returns the output value for the given input coordinates. /// /// The input coordinate on the x-axis. /// The input coordinate on the y-axis. /// The input coordinate on the z-axis. /// The resulting output value. public override double GetValue(double x, double y, double z) { Debug.Assert(Modules[0] != null); return Modules[0].GetValue(x, y, z) * Scale + Bias; } #endregion } }