Exemple #1
0
 internal static bool INTYPEOF(IVectorOrDirection obj, string typeString)
 {
     if (obj is Vector && typeString.ToLowerInvariant().Contains("vector"))
     {
         return(true);
     }
     if (obj is Direction && typeString.ToLowerInvariant().Contains("direction"))
     {
         return(true);
     }
     return(false);
 }
Exemple #2
0
        static IVectorOrDirection IfcNormalise(IVectorOrDirection Arg)
        {
            // local variables
            int                Ndim;
            Direction          V   = new Direction(1.0, 0.0);
            Vector             Vec = new Vector(new Direction(1.0, 0.0), 1.0);
            double             Mag;
            IVectorOrDirection Result = V;

            if (!EXISTS(Arg))
            {
                return(null);
            }
            else
            {
                if (Arg is Vector)
                {
                    Ndim = Arg.Dim;
                    var vArg = Arg as Vector;
                    V.DirectionRatios = vArg.Orientation.DirectionRatios;
                    Vec.Magnitude     = vArg.Magnitude;
                    Vec.Orientation   = V;
                    if (vArg.Magnitude == 0.0)
                    {
                        return(null);
                    }
                    else
                    {
                        Vec.Magnitude = 1.0;
                    }
                }
                else
                {
                    var dArg = Arg as Direction;
                    Ndim = dArg.Dim;
                    V.DirectionRatios = dArg.DirectionRatios;
                }

                Mag = 0.0;
                for (var i = 0; i < Ndim; i++)
                {
                    Mag = Mag + V.DirectionRatios[i] * V.DirectionRatios[i];
                }
                if (Mag > 0.0)
                {
                    Mag = SQRT(Mag);
                    for (var i = 0; i < Ndim; i++)
                    {
                        V.DirectionRatios[i] = V.DirectionRatios[i] / Mag;
                    }
                    if (Arg is Vector)
                    {
                        Vec.Orientation = V;
                        Result          = Vec;
                    }
                    else
                    {
                        Result = V;
                    }
                }
                else
                {
                    return(null);
                }
            }
            return(Result);
        }