jueves, 29 de marzo de 2012

Encuesta sobre cultura.

Ingresen a este link para contestar!

http://mjgt.blogspot.mx/2012/02/loading.html

Práctica de Hilos.

Instrucciones:


  • Mejore el siguiente código.
  • Haga pruebas con él.
  • Saque conclusiones del uso de hilos.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace simulacionCaja
{
    class caja2
    {
        Queue<int> clientes;// = new Queue<int>();
        int op = 0; //número de operación a realizar
        int NumCaja;

        //public caja() { }

        public void caja_proc(Object n) {

            this.NumCaja = (int)n;
            int[] c = { 1, 2, 3, 4, 5, 6, 7 }; //vector de clientes
            clientes = new Queue<int>(c);
            Random rOp = new Random();
            for (int i = 0; i < c.Length; i++)
            {
                this.op = rOp.Next(1, 4);
                this.SeleccionarOpcion();
            }
        }

        public void Pago() {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek()+" Pagando");
            Thread.Sleep(12000);
            clientes.Dequeue();
        }

        public void Retiro()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() +" Retirando");
            Thread.Sleep(8000);
            clientes.Dequeue();
        }

        public void Cosulta()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() + " Consultando saldo");
            Thread.Sleep(4000);
            clientes.Dequeue();
        }

        public void Transaccion()
        {

            Console.WriteLine("Caja #" + this.NumCaja + " atendiendo a cliente " + clientes.Peek() + " Haciendo transacción");
            Thread.Sleep(20000);
            clientes.Dequeue();
        }

        public void SeleccionarOpcion() {

             //genera una opción del 1 al 4;

            switch (this.op) { 
            
                case 1:
                    this.Pago();
                    break;
                case 2:
                    this.Retiro();
                    break;
                case 3:
                    this.Cosulta();
                    break;
                case 4:
                    this.Transaccion();
                    break;
            }
        
        }
    }
}


//---------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace simulacionCaja
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Clear();
            //caja2 c1 = new caja2();
            //c1.caja_proc(1);

            caja2 c1 = new caja2();
            caja2 c2 = new caja2();
            caja2 c3 = new caja2();
            caja2 c4 = new caja2();

            Thread h1 = new Thread(c1.caja_proc);
            Thread h2 = new Thread(c2.caja_proc);
            Thread h3 = new Thread(c3.caja_proc);
            Thread h4 = new Thread(c4.caja_proc);

            h1.Start(1);
            h2.Start(2);
            h3.Start(3);
            h4.Start(4);

            h1.Join();
            h2.Join();
            h3.Join();
            h4.Join();
            //Console.WriteLine("Borrando todo");
            //Thread.Sleep(1000);
            //Console.Clear();
            Console.ReadKey();
        }
    }
}

jueves, 22 de marzo de 2012

Dibujo de un cubo 3D. Práctica.


Completa el cubo y consulta los comandos que creas que no has visto en clase.


// Practica 4.cpp: archivo de proyecto principal.


#include "stdafx.h"
#include <glut.h>


void Inicializacion(void);
void Dibuja(void);


int main()
{
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(600,600);
glutInitWindowPosition(100,100);
glutCreateWindow("CUBO EN OPENGL");
Inicializacion();
glutDisplayFunc(Dibuja);
glutMainLoop();


return 0;
}


void Inicializacion(void)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70,1,0.1,100);
glMatrixMode(GL_MODELVIEW);
glTranslated(0,0,-10);
glRotated(50,1,1,0);
glClearColor(0,0,0,0);
glShadeModel(GL_FLAT);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CW);
}


void Dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
//Cara 1
glColor3f(0,0,1);
glVertex3d(-2,-2,2);
glVertex3d(-2,2,2);
glVertex3d(2,2,2);
glVertex3d(2,-2,2);
//Cara 2
glColor3f(1,0,1);
glVertex3d(2,2,-2);
glVertex3d(-2,2,-2);
glVertex3d(-2,-2,-2);
glVertex3d(2,-2,-2);
glEnd();
glutSwapBuffers();
}

miércoles, 7 de marzo de 2012

Dibujos Geométricos.



https://docs.google.com/open?id=0B-hQiDaqUNLweGc2b2dCOVlUc09FdUhmZjNocE9uZw

Agregar código a la práctica GDI+.


Agreguen una investigación sobre el uso de regiones en GDI+.




private void pictureBox4_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //Tartas.....????


            /*Un gráfico de tarta es una forma parecida a una tarta; esto es,
             * un arco junto aon las dos líneas que unen sus vértices en el centro
             * de la elipse a la que pertenece el arco.
             * 
             * Para dibujar este tipo de gráficos el objeto Graphics proporciona
             * el método DrawPie que tiene como parámetros los miembros del método
             * DrawArc.**/
            pictureBox4.BackColor = Color.Black;
            Rectangle rect = new Rectangle(10, 10, 200, 100);
            Pen lapiz = new Pen(Color.Green, 3);
            g.DrawPie(lapiz, rect, 30, 150);


            //Polígonos


            /* Un polígono es una forma cerrada definida por tres o más puntos.
             * Por ejemplo un triángulo y un rectángulo son polígonos.
             * 
             * Paradibujar un polígono, son necesarios un objeto Graphics que
             * proporciona el método DrawPolygon, un objeto Pen y una matriz de
             * objetos Point (o PointF).
             * 
             * Esta matriz almacenará los puntos que se van a conectar mediante
             * líneas rectas.
             * 
             * El método DrawPolygon cierra el polígono de forma automática.
             * */


            PointF[] pentagono = {
                                     new Point(20,150),
                                     new Point(130,120),
                                     new Point(230,155),
                                     new Point(190,200),
                                     new Point(45,195)
                                 };


            g.DrawPolygon(lapiz, pentagono);


            //Curvas flexibles


            /* Dos tipos de curvas: cardinales y Bézier.
             * 
             * Cardinal: es una secuencia de curvas individuales combinadas
             * para formar una curva mayor; se especifica mediante una matriz
             * de puntos y un parámetro de tensión que por omisión vale 0.5,
             * y se dibuja invocando a DrawCurve.
             * 
             * Bézier se especifica con cuatro puntos: dos puntos correspondientes
             * a los extremos(p1 y p2) y dos puntos de control (c1 y c2). La curva
             * comienza en p1 y acaba en p2. La curva no pasa por los puntos de 
             * control (c1 y c2), pero estos se comportan como imanes, y tiran de la
             * curva en ciertas direcciones e influyen en el modo en que la curva
             * se dobla. Se dibuja invocando a DrawBeizer.
             * */
            Pen lapizRojo = new Pen(Color.Red);


            Point[] puntos = { 
                             
                                 new Point(25,25),
                                 new Point(50,15),
                                 new Point(100,5),
                                 new Point(120,25),
                                 new Point(150,50),
                                 new Point(220,200),
                                 new Point(120,120),
                             };


            //Dibujar líneas entre los puntos.


            g.DrawLines(lapizRojo, puntos);


            //Dibujar la curva


            g.DrawCurve(Pens.Green, puntos);


            //Puntos que definen la curva flexible de Bézier


            Point p1 = new Point(30, 120);
            Point p2 = new Point(150, 200);
            Point c1 = new Point(75, 10);
            Point c2 = new Point(50, 210);


            //Dibujar la curva


            g.DrawBezier(Pens.GreenYellow, p1, p2, c1, c2);




        }


        private void pictureBox5_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;


            //Trazados


            /* Un trazado es un objeto de la clase GraphicsPath. Se trata de una
             * figura formada por una secuencia de líneas, rectángulos, elipses
             * arcos, polígonos, curvas flexibles, etc., cuyos puntos inicial
             * y final pueden o no ser coincidentes.
             * 
             * Métodos: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon,
             * AddCurve y AddBeizer.
             * Ejemplo: **/


            GraphicsPath trazado = new GraphicsPath();


            Rectangle rect = new Rectangle(10, 10, 200, 100);
            trazado.AddArc(rect, 45, 135);
            trazado.AddLine(80, 100, 160, 200);
            trazado.CloseFigure();


            g.DrawPath(Pens.Blue, trazado);


        } //fin de PictureBox