public static Vec4 Smoothstep(Vec4 vec4, Vec4 vec5, Vec4 vec6) { var vec7 = new Vec4(0.0); vec7.X = Smoothstep(vec4.X, vec5.X, vec6.X); vec7.Y = Smoothstep(vec4.Y, vec5.Y, vec6.Y); vec7.Z = Smoothstep(vec4.Z, vec5.Z, vec6.Z); vec7.W = Smoothstep(vec4.W, vec5.W, vec6.W); return(vec7); }
public static Vec4 Cos(Vec4 vec4) { var vec5 = new Vec4(0.0); vec5.X = Math.Cos(vec4.X); vec5.Y = Math.Cos(vec4.Y); vec5.Z = Math.Cos(vec4.Z); vec5.W = Math.Cos(vec4.W); return(vec5); }
public static Vec4 Smoothstep(double n, double n2, Vec4 vec4) { var vec5 = new Vec4(0.0); vec5.X = Smoothstep(n, n2, vec4.X); vec5.Y = Smoothstep(n, n2, vec4.Y); vec5.Z = Smoothstep(n, n2, vec4.Z); vec5.W = Smoothstep(n, n2, vec4.W); return(vec5); }
public static Vec4 Trunc(Vec4 vec4) { var vec5 = new Vec4(0.0); vec5.X = Trunc(vec4.X); vec5.Y = Trunc(vec4.Y); vec5.Z = Trunc(vec4.Z); vec5.W = Trunc(vec4.W); return(vec5); }
public static Vec4 Mod(Vec4 vec4, double n) { var vec5 = new Vec4(0.0); vec5.X = vec4.X - n * Math.Floor(vec4.X / n); vec5.Y = vec4.Y - n * Math.Floor(vec4.Y / n); vec5.Z = vec4.Z - n * Math.Floor(vec4.Z / n); vec5.W = vec4.W - n * Math.Floor(vec4.W / n); return(vec5); }
public static Vec4 Ceil(Vec4 vec4) { var vec5 = new Vec4(0.0); vec5.X = Ceil(vec4.X); vec5.Y = Ceil(vec4.Y); vec5.Z = Ceil(vec4.Z); vec5.W = Ceil(vec4.W); return(vec5); }
public static Vec4 Round(Vec4 vec4) { var vec5 = new Vec4(0.0); vec5.X = Round(vec4.X); vec5.Y = Round(vec4.Y); vec5.Z = Round(vec4.Z); vec5.W = Round(vec4.W); return(vec5); }
public static Vec4 Min(Vec4 vec4, double n) { var vec5 = new Vec4(0.0); vec5.X = n < vec4.X ? n : vec4.X; vec5.Y = n < vec4.Y ? n : vec4.Y; vec5.Z = n < vec4.Z ? n : vec4.Z; vec5.W = n < vec4.W ? n : vec4.W; return(vec5); }
public static Vec4 Max(Vec4 vec4, Vec4 vec5) { var vec6 = new Vec4(0.0); vec6.X = vec4.X < vec5.X ? vec5.X : vec4.X; vec6.Y = vec4.Y < vec5.Y ? vec5.Y : vec4.Y; vec6.Z = vec4.Z < vec5.Z ? vec5.Z : vec4.Z; vec6.W = vec4.W < vec5.W ? vec5.W : vec4.W; return(vec6); }
public static Vec4 Max(Vec4 vec4, double n) { var vec5 = new Vec4(0.0); vec5.X = vec4.X < n ? n : vec4.X; vec5.Y = vec4.Y < n ? n : vec4.Y; vec5.Z = vec4.Z < n ? n : vec4.Z; vec5.W = vec4.W < n ? n : vec4.W; return(vec5); }
public static Vec4 Hsv2Rgb(Vec4 vec4) { var vec5 = new Vec4(1.0, 0.6666666666666666, 0.3333333333333333, 3.0); return(new Vec4( new Vec3(vec4.Z).Multiply(Mix(new Vec3(vec5.X, vec5.X, vec5.X), Clamp( Abs(Fract(new Vec3(vec4.X, vec4.X, vec4.X).Add(new Vec3(vec5.X, vec5.Y, vec5.Z))).Multiply(6.0) .Minus(new Vec3(vec5.W, vec5.W, vec5.W))).Minus(new Vec3(vec5.X, vec5.X, vec5.X)), 0.0, 1.0), vec4.Y)), vec4.A)); }
public static Vec4 Rgb2Hsv(Vec4 vec4) { var vec5 = new Vec4(0.0, -0.3333333333333333, 0.6666666666666666, -1.0); var mix = Mix(new Vec4(vec4.B, vec4.G, vec5.W, vec5.Z), new Vec4(vec4.G, vec4.B, vec5.X, vec5.Y), Step(vec4.B, vec4.G)); var mix2 = Mix(new Vec4(mix.X, mix.Y, mix.W, vec4.R), new Vec4(vec4.R, mix.Y, mix.Z, mix.X), Step(mix.X, vec4.R)); var n = mix2.X - Math.Min(mix2.W, mix2.Y); var n2 = 1.0E-10; return(new Vec4(Math.Abs(mix2.Z + (mix2.W - mix2.Y) / (6.0 * n + n2)), n / (mix2.X + n2), mix2.X, vec4.A)); }
// public static double fbm2(vec2 plus) // { // var n = 0.0; // var n2 = 0.5; // var vec2 = new vec2(100.0); // mat2 mat2 = new mat2(Math.Cos(0.5), Math.Sin(0.5), -Math.Sin(0.5), Math.Cos(0.5)); // for (var i = 0; i < 5; ++i) // { // n += n2 * noise(plus); // plus = mat2.times(plus).multiply(new vec2(2.0)).plus(vec2); // n2 *= 0.5; // } // // return n; // } public static Vec3 Rgb2Hsb(Vec3 vec3) { var vec4 = new Vec4(0.0, -0.3333333333333333, 0.6666666666666666, -1.0); var mix = Mix(new Vec4(vec3.B, vec3.G, vec4.W, vec4.Z), new Vec4(vec3.G, vec3.B, vec4.X, vec4.Y), Step(vec3.B, vec3.G)); var mix2 = Mix(new Vec4(mix.X, mix.Y, mix.W, vec3.R), new Vec4(vec3.R, mix.Y, mix.Z, mix.X), Step(mix.X, vec3.R)); var n = mix2.X - Math.Min(mix2.W, mix2.Y); var n2 = 1.0E-10; return(new Vec3(Abs(mix2.Z + (mix2.W - mix2.Y) / (6.0 * n + n2)), n / (mix2.X + n2), mix2.X)); }
public static Vec4 Step(Vec4 vec4, Vec4 vec5) { var vec6 = new Vec4(0.0); if (vec5.X < vec4.X) { vec6.X = 0.0; } else { vec6.X = 1.0; } if (vec5.Y < vec4.Y) { vec6.Y = 0.0; } else { vec6.Y = 1.0; } if (vec5.Z < vec4.Z) { vec6.Z = 0.0; } else { vec6.Z = 1.0; } if (vec5.W < vec4.W) { vec6.W = 0.0; } else { vec6.W = 1.0; } return(vec6); }
public static double Dot(Vec4 vec4, Vec4 vec5) { return(vec4.X * vec5.X + vec4.Y * vec5.Y + vec4.Z * vec5.Z + vec4.W * vec5.W); }
public static Vec4 Abs(Vec4 vec4) { return(new Vec4(vec4.X >= 0.0 ? vec4.X : -vec4.X, vec4.Y >= 0.0 ? vec4.Y : -vec4.Y, vec4.Z >= 0.0 ? vec4.Z : -vec4.Z, vec4.W >= 0.0 ? vec4.W : -vec4.W)); }
public static double Distance(Vec4 vec4, Vec4 vec5) { var minus = vec4.Minus(vec5); return(Math.Sqrt(minus.X * minus.X + minus.Y * minus.Y + minus.Z * minus.Z + minus.W * minus.W)); }
public static Vec4 Normalize(Vec4 vec4) { return(new Vec4(vec4.X / Length(vec4), vec4.Y / Length(vec4), vec4.Z / Length(vec4), vec4.W / Length(vec4))); }
public static Vec4 Fract(Vec4 vec4) { return(new Vec4(vec4.X - Math.Floor(vec4.X), vec4.Y - Math.Floor(vec4.Y), vec4.Z - Math.Floor(vec4.Z), vec4.W - Math.Floor(vec4.W))); }
public static Vec4 Pow(Vec4 vec4, Vec4 vec5) { return(new Vec4(Math.Pow(vec4.X, vec5.X), Math.Pow(vec4.Y, vec5.Y), Math.Pow(vec4.Z, vec5.Z), Math.Pow(vec4.W, vec5.W))); }
public static Vec4 Exp(Vec4 vec4) { return(new Vec4(Math.Exp(vec4.X), Math.Exp(vec4.Y), Math.Exp(vec4.Z), Math.Exp(vec4.W))); }
public static Vec4 Clamp(Vec4 vec4, double n, double n2) { return(new Vec4(Math.Min(Math.Max(vec4.X, n), n2), Math.Min(Math.Max(vec4.Y, n), n2), Math.Min(Math.Max(vec4.Z, n), n2), Math.Min(Math.Max(vec4.W, n), n2))); }
public static Vec4 Mix(Vec4 vec4, Vec4 vec5, double n) { return(new Vec4(vec4.X * (1.0 - n) + vec5.X * n, vec4.Y * (1.0 - n) + vec5.Y * n, vec4.Z * (1.0 - n) + vec5.Z * n, vec4.W * (1.0 - n) + vec5.W * n)); }
public static double Length(Vec4 vec4) { return(Math.Sqrt(vec4.X * vec4.X + vec4.Y * vec4.Y + vec4.Z * vec4.Z + vec4.W * vec4.W)); }