コード例 #1
0
        public static void DibujarLinea(Linea linea)
        {
            double xInicio = linea.Inicio.GetXFlotante();
            double xFin    = linea.Fin.GetXFlotante();
            double yInicio = linea.Inicio.GetYFlotante();
            double yFin    = linea.Fin.GetYFlotante();

            double pendiente = linea.GetPendiente();

            double pasoY = 1;
            double pasoX = 1;

            if (pendiente == 0)
            {
                pasoY = 0;
            }
            else if (double.IsInfinity(pendiente))
            {
                pasoX = 0;
            }
            else if (Math.Abs(yFin - yInicio) > Math.Abs(xFin - xInicio))
            {
                pasoX = Math.Abs(1 / pendiente);
            }
            else
            {
                pasoY = Math.Abs(pendiente);
            }

            if (yFin < yInicio)
            {
                pasoY = -pasoY;
            }
            if (xFin < xInicio)
            {
                pasoX = -pasoX;
            }

            double xIteracion = xInicio;
            double yIteracion = yInicio;

            while (((xIteracion >= xInicio && xIteracion <= xFin) ||
                    (xIteracion <= xInicio && xIteracion >= xFin)) &&
                   ((yIteracion >= yInicio && yIteracion <= yFin) ||
                    (yIteracion <= yInicio && yIteracion >= xFin)))
            {
                Gl.glVertex2d(xIteracion, yIteracion);

                xIteracion = xIteracion + pasoX;
                yIteracion = yIteracion + pasoY;
            }
        }