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); }
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); }
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); }
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); }
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); }
public static float PingPong(float t, float length) { t = MathFunc.Repeat(t, length * 2f); return(length - MathFunc.Abs(t - length)); }
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); }