public static IList RecortarPoligono(IList puntos, ViewPort viewport) { IList puntosClippeados; Punto pia = new PuntoFlotante(viewport.XIzq, viewport.YAbajo); Punto pda = new PuntoFlotante(viewport.XDer, viewport.YAbajo); Punto pdb = new PuntoFlotante(viewport.XDer, viewport.YArriba); Punto pib = new PuntoFlotante(viewport.XIzq, viewport.YArriba); puntosClippeados = Recortar(puntos, pia, pda); puntosClippeados = Recortar(puntosClippeados, pda, pdb); puntosClippeados = Recortar(puntosClippeados, pdb, pib); puntosClippeados = Recortar(puntosClippeados, pib, pia); return puntosClippeados; }
internal void DibujarZoomEscena(Escena escena) { Gl.glDisable(Gl.GL_LIGHTING); CrearPoligonosTerreno(escena.Terreno); CrearPoligonosRueda(escena.Rueda); Gl.glPushMatrix(); ViewPort vp = new ViewPort(escena.Rueda); this.EscalarEscenaToViewCameraWindow(vp); DibujarTerreno(escena.Terreno, true, vp); DibujarRueda(escena.Rueda); Gl.glPopMatrix(); Gl.glEnable(Gl.GL_LIGHTING); }
private void EscalarEscenaToViewCameraWindow(ViewPort viewPort) { Gl.glTranslated(X_MIN_ZOOM, Y_MIN_ZOOM, 0); Gl.glScaled((X_MAX_ZOOM - X_MIN_ZOOM) / (viewPort.XDer - viewPort.XIzq), (Y_MAX_ZOOM - Y_MIN_ZOOM) / (viewPort.YArriba - viewPort.YAbajo), 1); Gl.glTranslated(-viewPort.XIzq, -viewPort.YAbajo, 0); }