Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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));
        }
Exemple #12
0
        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));
        }
Exemple #13
0
        // 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));
        }
Exemple #14
0
        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);
        }
Exemple #15
0
 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);
 }
Exemple #16
0
 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));
 }
Exemple #17
0
        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));
        }
Exemple #18
0
 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)));
 }
Exemple #19
0
 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)));
 }
Exemple #20
0
 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)));
 }
Exemple #21
0
 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)));
 }
Exemple #22
0
 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)));
 }
Exemple #23
0
 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));
 }
Exemple #24
0
 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));
 }