コード例 #1
0
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double a = Module0.GetValue(x, y, z);
            double b = Module1.GetValue(x, y, z);

            return(Math.Min(a, b));
        }
コード例 #2
0
ファイル: Blend.cs プロジェクト: pboechat/AuberNoise
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double v1 = Module0.GetValue(x, y, z);
            double v2 = Module1.GetValue(x, y, z);
            double a  = (ModuleA.GetValue(x, y, z) + 1.0) / 2.0;

            return(MathUtils.LinearInterp(v1, v2, a));
        }
コード例 #3
0
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double xDisplace = x + XDisplaceModule.GetValue(x, y, z);
            double yDisplace = y + YDisplaceModule.GetValue(x, y, z);
            double zDisplace = z + ZDisplaceModule.GetValue(x, y, z);

            return(Module0.GetValue(xDisplace, yDisplace, zDisplace));
        }
コード例 #4
0
ファイル: RotatePoint.cs プロジェクト: pboechat/AuberNoise
        public double GetValue(double x, double y, double z)
        {
            double nx = (m_x1Matrix * x) + (m_y1Matrix * y) + (m_z1Matrix * z);
            double ny = (m_x2Matrix * x) + (m_y2Matrix * y) + (m_z2Matrix * z);
            double nz = (m_x3Matrix * x) + (m_y3Matrix * y) + (m_z3Matrix * z);

            return(Module0.GetValue(nx, ny, nz));
        }
コード例 #5
0
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double controlValue = ModuleC.GetValue(x, y, z);
            double alpha;

            if (EdgeFallOff > 0.0)
            {
                if (controlValue < (LowerBound - EdgeFallOff))
                {
                    return(Module0.GetValue(x, y, z));
                }

                else if (controlValue < (LowerBound + EdgeFallOff))
                {
                    double lowerCurve = (LowerBound - EdgeFallOff);
                    double upperCurve = (LowerBound + EdgeFallOff);
                    alpha = MathUtils.SCurve3((controlValue - lowerCurve) / (upperCurve - lowerCurve));
                    return(MathUtils.LinearInterp(Module0.GetValue(x, y, z), Module1.GetValue(x, y, z), alpha));
                }

                else if (controlValue < (UpperBound - EdgeFallOff))
                {
                    //Output value from control module is within selector threshold.
                    return(Module1.GetValue(x, y, z));
                }

                else if (controlValue < (UpperBound + EdgeFallOff))
                {
                    double lowerCurve = (UpperBound - EdgeFallOff);
                    double upperCurve = (UpperBound + EdgeFallOff);
                    alpha = MathUtils.SCurve3((controlValue - lowerCurve) / (upperCurve - lowerCurve));
                    return(MathUtils.LinearInterp(Module1.GetValue(x, y, z), Module0.GetValue(x, y, z), alpha));
                }

                else
                {
                    return(Module0.GetValue(x, y, z));
                }
            }

            else
            {
                if (controlValue < LowerBound || controlValue > UpperBound)
                {
                    return(Module0.GetValue(x, y, z));
                }

                else
                {
                    return(Module1.GetValue(x, y, z));
                }
            }
        }
コード例 #6
0
        //Methods//
        public double GetValue(double v)
        {
            double x     = (m_x1 - m_x0) * v + m_x0;
            double y     = (m_y1 - m_y0) * v + m_y0;
            double z     = (m_z1 - m_z0) * v + m_z0;
            double value = Module0.GetValue(x, y, z);

            if (Attenuate)
            {
                return(v * (1.0 - v) * 4 * value);
            }

            else
            {
                return(value);
            }
        }
コード例 #7
0
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double value = Module0.GetValue(x, y, z);

            if (value < LowerBound)
            {
                return(LowerBound);
            }

            else if (value > UpperBound)
            {
                return(UpperBound);
            }

            else
            {
                return(value);
            }
        }
コード例 #8
0
ファイル: Terrace.cs プロジェクト: pboechat/AuberNoise
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double value = Module0.GetValue(x, y, z);
            //Find the first element which has an input value larger than output value
            int indexPos;

            for (indexPos = 0; indexPos < ControlPoints.Count; indexPos++)
            {
                if (value < ControlPoints[indexPos])
                {
                    break;
                }
            }

            //Find two nearest control points to do quadratic interpolation
            int index0 = MathUtils.ClampValue(indexPos - 1, 0, ControlPoints.Count - 1);
            int index1 = MathUtils.ClampValue(indexPos, 0, ControlPoints.Count - 1);

            //If some points are missing, get nearest points value and exit now
            if (index0 == index1)
            {
                return(ControlPoints[index1]);
            }

            //Compute alpha value for cubic interpolation
            double value0 = ControlPoints[index0];
            double value1 = ControlPoints[index1];
            double alpha  = (value - value0) / (value1 - value0);

            if (InvertTerraces)
            {
                alpha = 1.0 - alpha;
                MathUtils.SwapValues(ref value0, ref value1);
            }

            //Squaring alpha produces terrace effect.
            alpha *= alpha;
            //Now perform linear interpolation with the alpha
            return(MathUtils.LinearInterp(value0, value1, alpha));
        }
コード例 #9
0
ファイル: Turbulence.cs プロジェクト: pboechat/AuberNoise
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            //Get values from three Perlins
            double x0, y0, z0;
            double x1, y1, z1;
            double x2, y2, z2;

            x0 = x + (12414.0 / 65536.0);
            y0 = y + (65124.0 / 65536.0);
            z0 = z + (31337.0 / 65536.0);
            x1 = x + (26519.0 / 65536.0);
            y1 = y + (18128.0 / 65536.0);
            z1 = z + (60493.0 / 65536.0);
            x2 = x + (53820.0 / 65536.0);
            y2 = y + (11213.0 / 65536.0);
            z2 = z + (44845.0 / 65536.0);
            double xDistort = x + (XDistortModule.GetValue(x0, y0, z0) * Power);
            double yDistort = y + (YDistortModule.GetValue(x1, y1, z1) * Power);
            double zDistort = z + (ZDistortModule.GetValue(x2, y2, z2) * Power);

            //Retrieve the output value
            return(Module0.GetValue(xDistort, yDistort, zDistort));
        }
コード例 #10
0
ファイル: TranslatePoint.cs プロジェクト: pboechat/AuberNoise
 //Methods//
 public double GetValue(double x, double y, double z)
 {
     return(Module0.GetValue(x + XTranslation, y + YTranslation, z + ZTranslation));
 }
コード例 #11
0
ファイル: Power.cs プロジェクト: pboechat/AuberNoise
 //Methods//
 public double GetValue(double x, double y, double z)
 {
     return(Math.Pow(Module0.GetValue(x, y, z), Module1.GetValue(x, y, z)));
 }
コード例 #12
0
 //Methods//
 public double GetValue(double x, double y, double z)
 {
     return(Module0.GetValue(x, y, z) + Module1.GetValue(x, y, z));
 }
コード例 #13
0
        //Methods//
        public double GetValue(double x, double y, double z)
        {
            double value = Module0.GetValue(x, y, z);

            return(Math.Pow(Math.Abs((value + 1.0) / 2.0), ExponentVal) * 2.0 - 1.0);
        }
コード例 #14
0
ファイル: ScaleBias.cs プロジェクト: pboechat/AuberNoise
 //Methods//
 public double GetValue(double x, double y, double z)
 {
     return(Module0.GetValue(x, y, z) * Scale + Bias);
 }
コード例 #15
0
ファイル: Program.cs プロジェクト: cmdf/extra-module-todo
 /// <summary>
 /// Setup application.
 /// </summary>
 private static void Setup()
 {
     Console0.Setup();
     Module0.Setup();
     Link0.Setup();
 }
コード例 #16
0
 //Methods//
 public double GetValue(double x, double y, double z)
 {
     return(Module0.GetValue(x * XScale, y * YScale, z * ZScale));
 }