TerrainDisplay.Collision.Intersection.Barycentric2 C# (CSharp) Method

Barycentric2() public static method

public static Barycentric2 ( System.Vector3 a, System.Vector3 b, System.Vector3 c, System.Vector3 p, System.Vector2 &uv ) : void
a System.Vector3
b System.Vector3
c System.Vector3
p System.Vector3
uv System.Vector2
return void
        public static void Barycentric2(Vector3 a, Vector3 b, Vector3 c, Vector3 p, out Vector2 uv)
        {
            float num;
            float num2;
            float num3;
            uv = new Vector2();
            var vector = Vector3.Cross(b - a, c - a);
            var num4 = Math.Abs(vector.X);
            var num5 = Math.Abs(vector.Y);
            var num6 = Math.Abs(vector.Z);
            if ((num4 >= num5) && (num4 >= num6))
            {
                num = TriArea2D(p.Y, p.Z, b.Y, b.Z, c.Y, c.Z);
                num2 = TriArea2D(p.Y, p.Z, c.Y, c.Z, a.Y, a.Z);
                num3 = 1f / vector.X;
            }
            else if ((num5 >= num4) && (num5 >= num6))
            {
                num = TriArea2D(p.X, p.Z, b.X, b.Z, c.X, c.Z);
                num2 = TriArea2D(p.X, p.Z, c.X, c.Z, a.X, a.Z);
                num3 = 1f / -vector.Y;
            }
            else
            {
                num = TriArea2D(p.X, p.Y, b.X, b.Y, c.X, c.Y);
                num2 = TriArea2D(p.X, p.Y, c.X, c.Y, a.X, a.Y);
                num3 = 1f / vector.Z;
            }
            uv.X = num * num3;
            uv.Y = num2 * num3;
        }