示例#1
0
        /// <summary>
        /// Vykreslení limitních čar pro otáčení nohy
        /// </summary>
        /// <param name="g">grafika</param>
        /// <param name="mid">střed otáčení nohy</param>
        /// <param name="rotation">rotace ve stupnich</param>
        private void legLimitLinePaint(Graphics g, Point mid, int rotation)
        {
            Point startPoint = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation, baseWidth / 12);
            Point endPoint   = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation, baseWidth / 2);
            Pen   pen        = new Pen(Color.Black, 2);

            pen.DashStyle = DashStyle.Dot;
            g.DrawLine(pen, startPoint, endPoint);
        }
示例#2
0
        /// <summary>
        /// Vykreslení konce šipky kol znázorňující pohyb
        /// </summary>
        /// <param name="g">grafika</param>
        /// <param name="mid">střed kola</param>
        /// <param name="rotation">rotace kola ve stupnich</param>
        /// <param name="circleWidth">průměr kola</param>
        /// <param name="speed">rychlost pohybu kola</param>
        private void endOfArrowPaint(Graphics g, Point mid, int rotation, int circleWidth, int speed)
        {
            Point endPointArrow   = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation, circleWidth * 3 + (speed / 5) + 4 - 20);
            Point arrowLeftPoint  = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation - 15, circleWidth * 2 + (speed / 5) - 20);
            Point arrowRightPoint = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation + 15, circleWidth * 2 + (speed / 5) - 20);

            Point[] triangl = new Point[3];
            triangl[0] = endPointArrow;
            triangl[1] = arrowLeftPoint;
            triangl[2] = arrowRightPoint;
            g.FillPolygon(Brushes.Orange, triangl);
        }
示例#3
0
        /// <summary>
        /// Vykreslení šipky kol znázorňující pohyb
        /// </summary>
        /// <param name="g">grafika</param>
        /// <param name="mid">střed kola</param>
        /// <param name="rotation">rotace kola ve stupnich</param>
        /// <param name="circleWidth">průměr kola</param>
        /// <param name="speed">rychlost pohybu kola</param>
        /// <param name="front">příznak zda se jedná o šipku pro pohyb dopředu</param>
        private void arrowPaint(Graphics g, Point mid, int rotation, int circleWidth, int speed, bool front)
        {
            Color color = Color.Black;

            if (speed > 0)
            {
                color = Color.Orange;
                endOfArrowPaint(g, mid, rotation, circleWidth, speed);
            }
            else if (front)
            {
                color = Color.Red;
            }
            Point startPoint = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation, circleWidth - 1);
            Point endPoint   = MathLibrary.getPointOnLine(mid.X, mid.Y, rotation, circleWidth * 3 + (speed / 5) - 20);

            g.DrawLine(new Pen(color, 4), startPoint, endPoint);
        }
示例#4
0
        /// <summary>
        /// Vykreslení celého nohy robota
        /// </summary>
        /// <param name="e">Paint event</param>
        /// <param name="Z">zdvih</param>
        /// <param name="ZK">rotace nohy</param>
        /// <param name="R">rotace kola</param>
        /// <param name="P">rychlost kola</param>
        /// <param name="xC">korelace umístění na x souřadnici (-1,1)</param>
        /// <param name="yC">korelace umístění na y souřadnici (-1,1)</param>
        /// <param name="rC">korelace otočení nohy ve stupních</param>
        private void legPaint(PaintEventArgs e, int Z, int ZK, int R, int P, int xC, int yC, int rC)
        {
            var g = e.Graphics;

            g.SmoothingMode = SmoothingMode.AntiAlias;
            Pen   pen         = new Pen(Color.LightSlateGray, 8 + ((-1) * Z / 10));
            Point firstPoint  = new Point(canvasMid.X + ((baseWidth / 2) * xC), canvasMid.Y + ((baseWidth / 2) * yC));
            Point secondPoint = MathLibrary.getPointOnLine(canvasMid.X + ((baseWidth / 2) * xC), canvasMid.Y + ((baseWidth / 2) * yC), ZK + rC, baseWidth);

            g.DrawLine(pen, firstPoint, secondPoint);
            bool reverse = false;

            if (xC * yC > 0)
            {
                reverse = true;
            }
            wheelPaint(g, secondPoint, ZK + rC - R + 93, P, reverse);
            legLimitLinePaint(g, firstPoint, rC - 45);
            legLimitLinePaint(g, firstPoint, rC + 45);
            wheelLimitLinePaint(g, secondPoint, ZK + rC - 180);
            wheelLimitLinePaint(g, secondPoint, ZK + rC - xC * yC * 90);
        }