Ejemplo n.º 1
0
        /* Reflect all the figures and groups in the scene.*/
        public void ReflectScene(ReflectOrientation reflectOrientation)
        {
            SceneRectangle sceneRectangle   = CalculateSceneCircumscribingRectangle();
            var            pointSceneCenter = new ScenePoint
            {
                X = (sceneRectangle.Vertex1.X + sceneRectangle.Vertex2.X) / 2.0,
                Y = (sceneRectangle.Vertex1.Y + sceneRectangle.Vertex2.Y) / 2.0
            };

            foreach (var figure in _figures)
            {
                var points = figure.Value.Points;
                GeneralMethodsFigure.ReflectFigure(reflectOrientation, pointSceneCenter, ref points);
                figure.Value.Points = points;
            }


            foreach (var composite in _compositeFigures)
            {
                foreach (var compositeFigures in composite.Value.ChildFigures)
                {
                    var points = compositeFigures.Points;
                    GeneralMethodsFigure.ReflectFigure(reflectOrientation, pointSceneCenter, ref points);
                    compositeFigures.Points = points;
                }
            }
        }
Ejemplo n.º 2
0
        /* Calculate the rectangle that wraps figure or group 'name'*/
        public SceneRectangle CalculateCircumscribingRectangle(string name)
        {
            IFigure          figure;
            ICompositeFigure compositeFigure;

            if (_figures.TryGetValue(name, out figure))
            {
                var point1 = new ScenePoint
                {
                    X = figure.CalculateCircumscribingRectangle().Vertex1.X,
                    Y = figure.CalculateCircumscribingRectangle().Vertex1.Y,
                };

                var point2 = new ScenePoint
                {
                    X = figure.CalculateCircumscribingRectangle().Vertex2.X,
                    Y = figure.CalculateCircumscribingRectangle().Vertex2.Y,
                };

                var ñircumscribingRectangle = new SceneRectangle
                {
                    Vertex1 = point1,
                    Vertex2 = point2
                };

                return(ñircumscribingRectangle);
            }
            else if (_compositeFigures.TryGetValue(name, out compositeFigure))
            {
                var point1 = new ScenePoint
                {
                    X = compositeFigure.CalculateCircumscribingRectangle().Vertex1.X,
                    Y = compositeFigure.CalculateCircumscribingRectangle().Vertex1.Y,
                };

                var point2 = new ScenePoint
                {
                    X = compositeFigure.CalculateCircumscribingRectangle().Vertex2.X,
                    Y = compositeFigure.CalculateCircumscribingRectangle().Vertex2.Y,
                };

                var ñircumscribingRectangle = new SceneRectangle
                {
                    Vertex1 = point1,
                    Vertex2 = point2
                };

                return(ñircumscribingRectangle);
            }
            else
            {
                throw new BadName();
            }
        }
Ejemplo n.º 3
0
        public SceneRectangle CalculateSceneCircumscribingRectangle()
        {
            var arrayX = new SortedSet <double>();
            var arrayY = new SortedSet <double>();

            foreach (var figure in _figures)
            {
                SceneRectangle figureSceneRectangle = figure.Value.CalculateCircumscribingRectangle();

                var ñircRectangle = new SceneRectangle
                {
                    Vertex1 = figureSceneRectangle.Vertex1,
                    Vertex2 = figureSceneRectangle.Vertex2
                };

                arrayX.Add(ñircRectangle.Vertex1.X);
                arrayX.Add(ñircRectangle.Vertex2.X);
                arrayY.Add(ñircRectangle.Vertex1.Y);
                arrayY.Add(ñircRectangle.Vertex2.Y);
            }

            foreach (var compositeFigure in _compositeFigures)
            {
                var ñircRectangle = new SceneRectangle
                {
                    Vertex1 = compositeFigure.Value.CalculateCircumscribingRectangle().Vertex1,
                    Vertex2 = compositeFigure.Value.CalculateCircumscribingRectangle().Vertex2
                };

                arrayX.Add(ñircRectangle.Vertex1.X);
                arrayX.Add(ñircRectangle.Vertex2.X);
                arrayY.Add(ñircRectangle.Vertex1.Y);
                arrayY.Add(ñircRectangle.Vertex2.Y);
            }

            var ñircumscribingRectangle = new SceneRectangle
            {
                Vertex1 = new ScenePoint {
                    X = arrayX.Min, Y = arrayY.Max
                },
                Vertex2 = new ScenePoint {
                    X = arrayX.Max, Y = arrayY.Min
                }
            };

            return(ñircumscribingRectangle);
        }