コード例 #1
0
ファイル: Visualize.cs プロジェクト: BHoM/BHoM_Engine
        public static List <ICurve> Visualize(this ContourLoad contourLoad, double scaleFactor = 1.0, bool displayForces = true, bool displayMoments = true, bool asResultants = true)
        {
            if (contourLoad.IsNull())
            {
                return(null);
            }

            if (!displayForces)
            {
                return(new List <ICurve>());
            }

            List <ICurve> arrows         = new List <ICurve>();
            Vector        globalForceVec = contourLoad.Force * scaleFactor;

            Vector forceVec;
            Basis  orientation;

            if (contourLoad.Axis == LoadAxis.Global)
            {
                if (contourLoad.Projected)
                {
                    Vector normal = contourLoad.Contour.Normal();
                    double scale  = Math.Abs(normal.DotProduct(globalForceVec.Normalise()));
                    forceVec = globalForceVec * scale;
                }
                else
                {
                    forceVec = globalForceVec;
                }
                orientation = Basis.XY;
            }
            else
            {
                orientation = LocalOrientation(contourLoad.Contour.Normal(), 0);
                forceVec    = globalForceVec;
            }

            arrows.AddRange(ConnectedArrows(contourLoad.Contour.SubParts(), forceVec, asResultants, orientation, 1, true));

            return(arrows);
        }