예제 #1
0
        /// <summary>
        /// Obtiene los puntos discretos del trayecto a realizar por el terraplen
        /// a partir de los puntos de control definidos en esta misma funcion.
        /// </summary>
        /// <param name="du">Delta U</param>
        /// <returns>
        /// Lista de vertices que corresponden a la curva que representa el trayecto.
        /// </returns>
        private IList <Punto> GetBsplineControlPoints(double du)
        {
            IList <Punto> ptsControl = new List <Punto>();

            ptsControl.Add(new Punto(55, 80, 0));
            ptsControl.Add(new Punto(72, 60, 0));
            ptsControl.Add(new Punto(76, 35, 0));
            ptsControl.Add(new Punto(46, 11, 0));
            ptsControl.Add(new Punto(46, 0, 0));
            ptsControl.Add(new Punto(46, -15, 0));
            ptsControl.Add(new Punto(60, -30, 0));
            ptsControl.Add(new Punto(75, -35, 0));
            ptsControl.Add(new Punto(83, -50, 0));
            ptsControl.Add(new Punto(83, -65, 0));
            ptsControl.Add(new Punto(77, -79, 0));
            ptsControl.Add(new Punto(43, -71, 0));
            ptsControl.Add(new Punto(21, -63, 0));
            ptsControl.Add(new Punto(1, -76, 0));
            ptsControl.Add(new Punto(-8, -74, 0));
            ptsControl.Add(new Punto(-25, -69, 0));
            ptsControl.Add(new Punto(-52, -64, 0));
            ptsControl.Add(new Punto(-63, -45, 0));
            ptsControl.Add(new Punto(-57, -14, 0));
            ptsControl.Add(new Punto(-40, 10, 0));
            ptsControl.Add(new Punto(-45, 30, 0));
            ptsControl.Add(new Punto(-67, 47, 0));
            ptsControl.Add(new Punto(-57, 70, 0));
            ptsControl.Add(new Punto(-23, 80, 0));

            CurvaBsplineSegmentosCubicos path = new CurvaBsplineSegmentosCubicos(ptsControl);

            return(path.GetPuntosDiscretos(du));
        }
예제 #2
0
        /// <summary>
        /// Dibuja la curva correspondiente a la trayectoria de la camara. La misma
        /// se encuentra definida por los puntos de control indicados por parámetros.
        /// </summary>
        /// <param name="puntos">Puntos de control</param>
        public static void DibujarCamaraPath(IList <PuntoFlotante> puntos)
        {
            // Dibujo el lazo punteado que une los puntos.
            PlotHelper.DibujarLazoPunteado(puntos);

            // Dibujo los puntos para denotar su ubicación.
            foreach (PuntoFlotante punto in puntos)
            {
                PlotHelper.DibujarPunto(punto);
            }

            // Dibujo la curva que se forma a partir de los puntos.
            if (puntos.Count > 3)
            {
                CurvaBsplineSegmentosCubicos curvaCamino = new CurvaBsplineSegmentosCubicos(puntos);

                Gl.glDisable(Gl.GL_LIGHTING);
                Gl.glBegin(Gl.GL_LINE_STRIP);
                Gl.glPushMatrix();
                Gl.glColor3d(0.5, 0.5, 0);
                foreach (PuntoFlotante punto in curvaCamino.GetPuntosDiscretos(0.001))
                {
                    Gl.glVertex2d(punto.X, punto.Y);
                }
                Gl.glPopMatrix();
                Gl.glEnd();
                Gl.glEnable(Gl.GL_LIGHTING);
                Gl.glColor3d(1, 1, 1);
            }
        }