public override List <Point> GetPoints()
        {
            ConnectPoints cp = new ConnectPoints();

            int    x0          = _startPoint.X;
            int    y0          = _startPoint.Y;
            int    x1          = _endPoint.X;
            int    y1          = _endPoint.Y;
            double angleRadian = 60 * Math.PI / 180;
            //Находим вторую пару координат линии, которую мы разворачиваем на 60 градусов.
            int x2 = (int)((x0 - x1) * Math.Cos(angleRadian) - (y0 - y1) * Math.Sin(angleRadian) + x1);
            int y2 = (int)((x0 - x1) * Math.Sin(angleRadian) + (y0 - y1) * Math.Cos(angleRadian) + y1);

            List <Point> listPoint = new List <Point>();

            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x0, y0), new Point(x1, y1)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x1, y1), new Point(x2, y2)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x2, y2), new Point(x0, y0)));

            double lengthSize1 = Math.Sqrt(Math.Pow((x1 - x0), 2) + Math.Pow((y1 - y0), 2));
            double lengthSize2 = Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
            double lengthSize3 = Math.Sqrt(Math.Pow((x0 - x2), 2) + Math.Pow((y0 - y2), 2));

            _centerPoint.X = (int)((lengthSize1 * x2 + lengthSize2 * x0 + lengthSize3 * x1) / (lengthSize1 + lengthSize2 + lengthSize3));
            _centerPoint.Y = (int)((lengthSize1 * y2 + lengthSize2 * y0 + lengthSize3 * y1) / (lengthSize1 + lengthSize2 + lengthSize3));
            _centerPoint   = new Point(_centerPoint.X, _centerPoint.Y);

            return(listPoint);
        }
        public override List <Point> GetPoints()
        {
            ConnectPoints cp = new ConnectPoints();

            int x0 = _startPoint.X;
            int y0 = _startPoint.Y;
            int x1 = _endPoint.X;
            int y1 = _endPoint.Y;
            //node3.X = _startPoint.X;
            //node3.Y = _endPoint.Y;
            List <Point> listPoint = new List <Point>();

            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x0, y0), new Point(x1, y1)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x1, y1), new Point(node3.X, node3.Y)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(node3.X, node3.Y), new Point(x0, y0)));

            double lengthSize1 = Math.Sqrt(Math.Pow((x1 - x0), 2) + Math.Pow((y1 - y0), 2));
            double lengthSize2 = Math.Sqrt(Math.Pow((node3.X - x1), 2) + Math.Pow((node3.Y - y1), 2));
            double lengthSize3 = Math.Sqrt(Math.Pow((x0 - node3.X), 2) + Math.Pow((y0 - node3.X), 2));

            _centerPoint.X = (int)((lengthSize1 * node3.X + lengthSize2 * x0 + lengthSize3 * x1) / (lengthSize1 + lengthSize2 + lengthSize3));
            _centerPoint.Y = (int)((lengthSize1 * node3.Y + lengthSize2 * y0 + lengthSize3 * y1) / (lengthSize1 + lengthSize2 + lengthSize3));


            return(listPoint);
        }
        public override void Rotate()
        {
            ConnectPoints cp        = new ConnectPoints();
            ILineWidth    lineWidth = new LineWidth();

            int          x0        = _startPoint.X;
            int          y0        = _startPoint.Y;
            int          x1        = _endPoint.X;
            int          y1        = _endPoint.Y;
            List <Point> listPoint = new List <Point>();

            double lengthSize1 = Math.Sqrt(Math.Pow((x1 - x0), 2) + Math.Pow((y1 - y0), 2));
            double lengthSize2 = Math.Sqrt(Math.Pow((x0 - x1), 2) + Math.Pow((y1 - y1), 2));
            double lengthSize3 = Math.Sqrt(Math.Pow((x0 - x0), 2) + Math.Pow((y0 - y1), 2));


            double tmpX = (x0 - node3.X) * Math.Cos(_angle) - (y0 - node3.Y) * Math.Sin(_angle) + node3.X;
            double tmpY = (x0 - node3.X) * Math.Sin(_angle) + (y0 - node3.Y) * Math.Cos(_angle) + node3.Y;

            x0 = (int)tmpX;
            y0 = (int)tmpY;

            tmpX = (x1 - node3.X) * Math.Cos(_angle) - (y1 - node3.Y) * Math.Sin(_angle) + node3.X;
            tmpY = (x1 - node3.X) * Math.Sin(_angle) + (y1 - node3.Y) * Math.Cos(_angle) + node3.Y;
            x1   = (int)tmpX;
            y1   = (int)tmpY;

            List <Point> listpoint = new List <Point>();

            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x0, y0), new Point(x1, y1)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(x1, y1), new Point(node3.X, node3.Y)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(node3.X, node3.Y), new Point(x0, y0)));

            lineWidth.LWidth(new Point(x0, y0), new Point(x1, y1), _linewWidth, _colorLine);
            lineWidth.LWidth(new Point(x1, y1), new Point(node3.X, node3.Y), _linewWidth, _colorLine);
            lineWidth.LWidth(new Point(node3.X, node3.Y), new Point(x0, y0), _linewWidth, _colorLine);
            _centerPoint.X = (int)((lengthSize1 * x0 + lengthSize2 * node3.X + lengthSize3 * x1) / (lengthSize1 + lengthSize2 + lengthSize3));
            _centerPoint.Y = (int)((lengthSize1 * y1 + lengthSize2 * node3.Y + lengthSize3 * y1) / (lengthSize1 + lengthSize2 + lengthSize3));
            _centerPoint   = new Point(_centerPoint.X, _centerPoint.Y);
            _startPoint.X  = x0;
            _startPoint.Y  = y0;
            _endPoint.X    = x1;
            _endPoint.Y    = y1;
        }
예제 #4
0
        public override List <Point> GetPoints()
        {
            ConnectPoints cp = new ConnectPoints();

            int          X0         = _startPoint.X;
            int          Y0         = _startPoint.Y;
            int          X1         = _endPoint.X;
            int          Y1         = _endPoint.Y;
            List <Point> listPoints = new List <Point>();

            listPoints.AddRange(cp.ConnectTwoPoints(new Point(X0, Y0), new Point(X1, Y0)));
            listPoints.AddRange(cp.ConnectTwoPoints(new Point(X1, Y0), new Point(X1, Y1)));
            listPoints.AddRange(cp.ConnectTwoPoints(new Point(X1, Y1), new Point(X0, Y1)));
            listPoints.AddRange(cp.ConnectTwoPoints(new Point(X0, Y1), new Point(X0, Y0)));


            _centerPoint = new Point(X0 + ((X1 - X0) / 2), Y0 + ((Y1 - Y0) / 2));
            return(listPoints);
        }
        public override List <Point> GetPoints()
        {
            ConnectPoints cp = new ConnectPoints();

            Point        oneP  = _startPoint;
            Point        twoP  = _startPoint;
            Point        threP = _startPoint;
            Point        fourP = _startPoint;
            int          d;
            List <Point> listPoint = new List <Point>();

            if (_startPoint.X < _endPoint.X && _startPoint.Y < _endPoint.Y)
            {
                d      = _endPoint.Y - _startPoint.Y;
                twoP.X = _startPoint.X + d;
                twoP.Y = _startPoint.Y;

                threP.X = twoP.X;
                threP.Y = threP.Y + d;

                fourP.X = threP.X - d;
                fourP.Y = threP.Y;

                _centerPoint = new Point(_startPoint.X + ((_endPoint.X - _startPoint.X) / 2), _startPoint.Y + ((_endPoint.Y - _startPoint.Y) / 2));
            }
            if (_startPoint.X > _endPoint.X && _startPoint.Y > _endPoint.Y)
            {
                d      = _startPoint.X - _endPoint.X;
                twoP.X = _startPoint.X - d;
                twoP.Y = _startPoint.Y;

                threP.X = twoP.X;
                threP.Y = threP.Y - d;

                fourP.X = threP.X + d;
                fourP.Y = threP.Y;

                _centerPoint = new Point(_endPoint.X + ((_startPoint.X - _endPoint.X) / 2), _endPoint.Y + ((_startPoint.Y - _endPoint.Y) / 2));
            }
            if (_startPoint.X > _endPoint.X && _startPoint.Y < _endPoint.Y)
            {
                d      = _startPoint.X - _endPoint.X;
                twoP.X = _startPoint.X;
                twoP.Y = _startPoint.Y + d;

                threP.X = twoP.X - d;
                threP.Y = twoP.Y;

                fourP.X = threP.X;
                fourP.Y = threP.Y - d;

                _centerPoint = new Point(_endPoint.X + ((_startPoint.X - _endPoint.X) / 2), _startPoint.Y + ((_endPoint.Y - _startPoint.Y) / 2));
            }
            if (_startPoint.X < _endPoint.X && _startPoint.Y > _endPoint.Y)
            {
                d      = _endPoint.X - _startPoint.X;
                twoP.X = _startPoint.X + d;
                twoP.Y = _startPoint.Y;

                threP.X = twoP.X;
                threP.Y = threP.Y - d;

                fourP.X = threP.X - d;
                fourP.Y = threP.Y;

                _centerPoint = new Point(_startPoint.X + ((_endPoint.X - _startPoint.X) / 2), _endPoint.Y + ((_startPoint.Y - _endPoint.Y) / 2));
            }
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(_startPoint.X, _startPoint.Y), new Point(twoP.X, twoP.Y)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(twoP.X, twoP.Y), new Point(threP.X, threP.Y)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(threP.X, threP.Y), new Point(fourP.X, fourP.Y)));
            listPoint.AddRange(cp.ConnectTwoPoints(new Point(fourP.X, fourP.Y), new Point(_startPoint.X, _startPoint.Y)));

            return(listPoint);
        }
예제 #6
0
        public override List <Point> GetPoints()
        {
            ConnectPoints cp = new ConnectPoints();

            return(cp.ConnectTwoPoints(_startPoint, _endPoint));
        }