Example #1
0
        public static AvalueSettings AvalueSettings(ViewConeEnum conetype, bool calcOcclusion)
        {
            return(new AvalueSettings
            {
                ConeType = conetype,

                CalculateOcclusion = calcOcclusion,
            });
        }
Example #2
0
        /***************************************************/
        /**** Private Methods                           ****/
        /***************************************************/

        private static List <Polyline> SetViewCone(double scale, ViewConeEnum conetype, Vector up, Vector horiz, Point origin)
        {
            List <double[]> xycoords = GetConeCoords(conetype);

            List <Point> pointsL = OrientatePoints(up, horiz, origin, xycoords[0], xycoords[1], 0);

            List <Point> pointsR = OrientatePoints(up, horiz, origin, xycoords[0], xycoords[1], 1);

            return(new List <Polyline> {
                Geometry.Create.Polyline(pointsL), Geometry.Create.Polyline(pointsR)
            });
        }
Example #3
0
        public static ViewConeEnum ViewConeType(int typeNum)
        {
            var enumCount = ViewConeEnum.GetNames(typeof(ViewConeEnum)).Length;

            //last name is undefined so total possible types is enumCount-2
            if (typeNum > enumCount - 2)
            {
                typeNum = 0;
            }

            ViewConeEnum value = (ViewConeEnum)typeNum;

            return(value);
        }
Example #4
0
        /***************************************************/

        private static List <double[]> GetConeCoords(ViewConeEnum conetype)
        {
            //all coords in metres
            //coords should be in dataset namespace
            //each coordinate set is later mirrored to create a complete view cone
            double[] coneX;
            double[] coneY;
            switch (conetype)
            {
            case ViewConeEnum.DynamicConeArea:

                coneX = new double[] { 0, 0.0632, 0.084721, 0.105844, 0.125472, 0.142374, 0.155985, 0.166052, 0.17192, 0.171582, 0.16254, 0.146858, 0.127821, 0.106978, 0.085479, 0.064005, 0 };

                coneY = new double[] { -0.079476, -0.0928, -0.092786, -0.088735, -0.079981, -0.066695, -0.05004, -0.031027, -0.010346, 0.011084, 0.030438, 0.045089, 0.055073, 0.060349, 0.061347, 0.059641, 0.050511 };

                return(new List <double[]> {
                    coneX, coneY
                });

            case ViewConeEnum.StaticConeArea:

                coneX = new double[] { -8.136e-6, 0.007548, 0.016998, 0.027217, 0.034549, 0.041881, 0.048213, 0.052435, 0.056213, 0.05777, 0.056994, 0.054996, 0.051222, 0.046225, 0.040895, 0.034232, 0.027347, 0.019461, 0.009577, 0.003937, 0.000013 };

                coneY = new double[] { 0.050302, 0.050038, 0.048089, 0.044425, 0.040427, 0.034764, 0.027989, 0.02077, 0.01144, 0, -0.010552, -0.020105, -0.031879, -0.042099, -0.050986, -0.059984, -0.066983, -0.073204, -0.077982, -0.079265, -0.079476 };

                return(new List <double[]> {
                    coneX, coneY
                });

            case ViewConeEnum.ViewFrameArea:

                coneX = new double[] { 0, 0.029, 0.029, 0 };

                coneY = new double[] { 0.029, 0.029, -0.029, -0.029 };

                return(new List <double[]> {
                    coneX, coneY
                });

            default:

                return(null);
            }
        }
Example #5
0
        public static ViewCone ViewCone(Vector up = null, Vector horiz = null, Point origin = null, double scale = 1.0, ViewConeEnum conetype = ViewConeEnum.ViewFrameArea)
        {
            //should check up  and horiz are in plane
            if (up == null)
            {
                up = Vector.YAxis;
            }
            if (horiz == null)
            {
                horiz = Vector.XAxis;
            }
            if (origin == null)
            {
                origin = Point.Origin;
            }
            List <Polyline> cones = SetViewCone(scale, conetype, up, horiz, origin);
            double          area  = cones.Sum(x => x.Area());

            return(new ViewCone
            {
                ConeBoundary = cones,

                ConeArea = area,
            });
        }