示例#1
0
    public static float MoveTowards(float current, float target, float maxDelta)
    {
        float result;

        if (MathFunc.Abs(target - current) <= maxDelta)
        {
            result = target;
        }
        else
        {
            result = current + MathFunc.Sign(target - current) * maxDelta;
        }
        return(result);
    }
示例#2
0
        public static float GetFractalRidgedNoise(Vector2 position, NoiseParameters noiseParameters, FastNoise noise, int seed = 0)
        {
            float sum = 0f;
            float freq = 1.0f, amp = 1.0f;

            for (int i = 0; i < noiseParameters.octaves; i++)
            {
                float n = GetNoise(position * freq, noise, seed + i);
                n = ((1f - MathFunc.Abs(n)) * 2f - 1);
                //n = MathFunc.PingPong(n,0.5f)*2f;
                sum  += amp * n;
                freq *= noiseParameters.lacunarity;
                amp  *= noiseParameters.gain;
            }
            return(sum);
        }
示例#3
0
        public static float GetFractalAlpsNoise(Vector2 position, NoiseParameters noiseParameters, FastNoise noise, int seed = 0)
        {
            float   warp = 1.5f;
            float   sum = 0f;
            float   freq = 1.0f, amp = 1.0f;
            Vector2 dsum = new Vector2(0, 0);

            for (int i = 0; i < noiseParameters.octaves; i++)
            {
                Vector3 n = GetDerivativePerlinNoise(position * freq, noise, seed + i);
                sum  += amp * (1 - MathFunc.Abs(n.x));
                dsum += amp * new Vector2(n.y, n.z) * -n.x;
                freq *= noiseParameters.lacunarity;
                amp  *= noiseParameters.gain * MathFunc.Clamp01(sum);
            }
            return(sum);
        }
示例#4
0
    public static float Gamma(float value, float absmax, float gamma)
    {
        bool flag = false;

        if (value < 0f)
        {
            flag = true;
        }
        float num = MathFunc.Abs(value);
        float result;

        if (num > absmax)
        {
            result = ((!flag) ? num : (-num));
        }
        else
        {
            float num2 = MathFunc.Pow(num / absmax, gamma) * absmax;
            result = ((!flag) ? num2 : (-num2));
        }
        return(result);
    }
示例#5
0
        public static float GetFractalErosionRidgedNoise(Vector2 position, NoiseParameters noiseParameters, FastNoise noise, int seed = 0)
        {
            float   sum = 0f;
            float   freq = 1.0f, amp = 1.0f;
            Vector2 dsum = new Vector2(0, 0);

            for (int i = 0; i < noiseParameters.octaves; i++)
            {
                Vector3 n = GetDerivativePerlinNoise(position * freq, noise, seed + i);
                n.x = ((1f - MathFunc.Abs(n.x)) * 2f - 1);
                n.y = ((1f - MathFunc.Abs(n.y)) * 2f - 1);
                n.z = ((1f - MathFunc.Abs(n.z)) * 2f - 1);
                //n.x = 1f-MathFunc.PingPong(n.x,0.5f)*2f;
                //n.y = 1f-MathFunc.PingPong(n.y,0.5f)*2f;
                //n.z = 1f-MathFunc.PingPong(n.z,0.5f)*2f;
                //n.x = MathFunc.Pow(n.x,2);

                dsum += new Vector2(n.y, n.z);
                sum  += amp * n.x / (1 + Vector2.Dot(dsum, dsum));
                freq *= noiseParameters.lacunarity;
                amp  *= noiseParameters.gain;
            }
            return(sum);
        }
示例#6
0
 public static float PingPong(float t, float length)
 {
     t = MathFunc.Repeat(t, length * 2f);
     return(length - MathFunc.Abs(t - length));
 }
示例#7
0
    public void SetFrom(OBBThreeD obb)
    {
        Vector3 halfSize = MathFunc.Abs(obb.axis[0] * obb.r[0]) + MathFunc.Abs(obb.axis[1] * obb.r[1]) + MathFunc.Abs(obb.axis[2] * obb.r[2]);

        SetFromCenterAndSize(obb.pos, 2.0f * halfSize);
    }