Exemplo n.º 1
0
        public static SurfaceTypes ComputeSurfaceType(JVector[] triangle, WindingTypes winding)
        {
            var p0 = triangle[0];
            var p1 = triangle[1];
            var p2 = triangle[2];

            return(ComputeSurfaceType(Utilities.ComputeNormal(p0, p1, p2, winding).ToVec3(), out _));
        }
Exemplo n.º 2
0
        public static JVector ComputeNormal(JVector p0, JVector p1, JVector p2, WindingTypes winding,
                                            bool shouldNormalize = true)
        {
            var v0 = JVector.Subtract(p1, p0);
            var v1 = JVector.Subtract(p2, p0);

            // This calculation is the same as the one used in a constructor below, but due to using JVector vs. vec3,
            // it's easier to just duplicate the code.
            var v = JVector.Cross(v0, v1) * (winding == WindingTypes.Clockwise ? 1 : -1);

            return(shouldNormalize ? JVector.Normalize(v) : v);
        }
Exemplo n.º 3
0
        public static vec3 Normal(vec3 p0, vec3 p1, vec3 p2, WindingTypes winding, bool shouldNormalize = true)
        {
            var v = Cross(p1 - p0, p2 - p0) * (winding == WindingTypes.Clockwise ? 1 : -1);

            return(shouldNormalize ? Normalize(v) : v);
        }
Exemplo n.º 4
0
 public static vec3 Normal(vec3[] triangle, WindingTypes winding, bool shouldNormalize = true)
 {
     return(Normal(triangle[0], triangle[1], triangle[2], winding, shouldNormalize));
 }
Exemplo n.º 5
0
 public SurfaceTriangle(vec3 p0, vec3 p1, vec3 p2, WindingTypes winding, int material,
                        bool shouldComputeFlatNormal = false) :
     this(p0, p1, p2, Utilities.ComputeNormal(p0, p1, p2, winding), material, null, shouldComputeFlatNormal)
 {
 }