Ejemplo n.º 1
0
        public static Bitmap Midpoint(Bitmap img, int x1, int y1, int x2, int y2, Color cor)
        {
            Bitmap btm = new Bitmap(img);

            double cx = x1;
            double cy = y1;

            double rx = Math.Abs(x2 - x1);
            double ry = Math.Abs(y2 - y1);

            double x = 0;
            double y = ry;

            double d1 = Math.Pow(ry, 2) - Math.Pow(rx, 2) * ry + Math.Pow(rx, 2) / 4;
            double dx = 2 * Math.Pow(ry, 2) * x;
            double dy = 2 * Math.Pow(rx, 2) * y;

            while (dx < dy)
            {
                DrawEllipse.Draw(btm, (int)Math.Round(x), (int)Math.Round(y), (int)Math.Round(cx), (int)Math.Round(cy), cor);
                if (d1 < 0)
                {
                    x++;
                    dx += 2 * Math.Pow(ry, 2);
                    d1 += dx + Math.Pow(ry, 2);
                }
                else
                {
                    x++;
                    y--;
                    dx += 2 * Math.Pow(ry, 2);
                    dy -= 2 * Math.Pow(rx, 2);
                    d1 += dx - dy + Math.Pow(ry, 2);
                }
            }

            double d2 = (Math.Pow(ry, 2) * ((x + 0.5) * (x + 0.5)))
                        + (Math.Pow(rx, 2) * ((y - 1) * (y - 1)))
                        - Math.Pow(rx, 2) * Math.Pow(ry, 2);

            while (y >= 0)
            {
                DrawEllipse.Draw(btm, (int)Math.Round(x), (int)Math.Round(y), (int)Math.Round(cx), (int)Math.Round(cy), cor);
                if (d2 > 0)
                {
                    y--;
                    dy -= 2 * Math.Pow(rx, 2);
                    d2 += Math.Pow(rx, 2) - dy;
                }
                else
                {
                    y--;
                    x++;
                    dx += 2 * Math.Pow(ry, 2);
                    dy -= 2 * Math.Pow(rx, 2);
                    d2 += dx - dy + Math.Pow(rx, 2);
                }
            }
            return(btm);
        }
Ejemplo n.º 2
0
        private void picBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (picBox.Image != null)
            {
                toolTip.SetToolTip(picBox, "X:" + e.X + " Y:" + e.Y);
            }
            if (polyflag == true && polyfirst == false)
            {
                picBox.Image = DrawLine.DDA((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
            }
            else
            {
                if (flag == true && picBox.Image != null && polyflag == false)
                {
                    switch (this.Active)
                    {
                    case "Equação Real da Reta":
                        picBox.Image = DrawLine.RealLine((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    case "DDA":
                        picBox.Image = DrawLine.DDA((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    case "Bresenham":
                        picBox.Image = DrawLine.Bresenham((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    case "Trigonometria":
                        picBox.Image = DrawCircle.Trigonometry((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    case "Ponto Médio":
                        picBox.Image = DrawCircle.Midpoint((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    case "Ponto Médio Elipse":
                        picBox.Image = DrawEllipse.Midpoint((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;

                    default:
                        picBox.Image = DrawCircle.RealCircle((Bitmap)img, point.X, point.Y, e.X, e.Y, Color.Black);
                        break;
                    }
                }
            }
        }