• Domingo 22 de Diciembre de 2024, 12:43

Autor Tema:  Consejo Con Graficos  (Leído 3020 veces)

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Consejo Con Graficos
« en: Jueves 24 de Junio de 2004, 05:55 »
0
HOLA!! :hola:
tengo un porblema estoy haciendo un reloj analogo en turbo c++, este reloj sirve bien y todo, el problema es le siguiente, el reloj necesita esta siendo borrado y redibujado (minimo las manecillas) en menos de unsegundo durante el tiempo que sea, pero al redibujar tanto y tan rápido pues se ve muy mal, por que elmetodode dibujado de bgi que uso (el VGA) es muy malo, se ve comoparpadea siempre, les voya  explicar comole hago
primero dibujo el reloj pro completo, y el while comienza en donde dibuja las manecillas, antes hacian un circulo que borraba toda el area donde podían estar las manecillas y se veia mal, ahora lo que hago es que antes de volverlas a dibujar borro su hubicación anterior, pero sucede que se ve = o peor que si pongo todo un circulo relleno, alguien me podría dar una buena sugerencia para eliminar este molesto error y que se vea fluida la animación de mi reloj?
muchas gracias  :hola: :comp:
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #1 en: Jueves 24 de Junio de 2004, 09:15 »
0
Supongo que estas trabajando en Borland C++.
Tienes que hacer dos cosas :

[a] : usar la funcion setwritemode(XOR_PUT), cuando empieza el proceso de movimiento de las agujas, y dibujar una linea dos veces :la primera la hace aparecer, la segunda  borra.
Fijate que el color elegido cambia un poco.

: borrar y dibujar otra vez cada un segundo, si lo haces constantemente la pantalla va a parpadear.

Por cualquier problema, estoy a tu disposicion. Avizame como te ha ido.

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #2 en: Domingo 27 de Junio de 2004, 06:33 »
0
HOla!! gracias pro el consejo parpadeamenos pero la verdad sigue viendose mal y además es peor porque deja la marca como si no pintara la de borrado, la verdad espero que me puedas aconsejar el codigo que hace todo el reloj es elsigueinte
Código: Text
  1. int H,CO,CA,X,Y,x,y,i;
  2.   int Xs,Ys,Xm,Ym,Xh,Yh;
  3.   double temp;
  4.   float ho,m,s;
  5.   H=200;
  6.   x=320;
  7.   y=240;
  8.        //  while(!kbhit())
  9.   //{
  10.   setfillstyle(1,BLANCO);
  11.   fillellipse(x,y,H,H);
  12.   setcolor(GRIS);
  13.   for(i=1;i<61;i++)
  14.   {
  15.     if(i >0 && i <=15)
  16.     {
  17.       temp = (-1 *(i*6-90))/((360/M_PI)/2);
  18.       CO = -1 * (H *(sin(temp)));
  19.       CA = H * (cos(temp));
  20.     }
  21.     else if (i >15 && i<=30)
  22.     {
  23.       temp = (i*6-90)/((360/M_PI)/2);
  24.       CO =H * (sin(temp));
  25.       CA =H * (cos(temp));
  26.     }
  27.     else if (i >30 && i<=45)
  28.     {
  29.       temp = (-1*(i*6-270))/((360/M_PI)/2);
  30.       CO = H * (sin(temp));
  31.       CA= -1 * (H * (cos(temp)));
  32.     }
  33.     else if (i >45 && i <=60)
  34.     {
  35.       temp =(i*6-270)/((360/M_PI)/2);
  36.       CO = -1* (H * (sin(temp)));
  37.       CA = -1 *(H *(cos(temp)));
  38.     }
  39.     X= x + CA;
  40.     Y = y + CO;
  41.     line(x,y,X,Y);
  42.   }
  43.   setcolor(NEGRO);
  44.   for(i=1;i<13;i++)
  45.   {
  46.     if(i >0 && i <=3)
  47.     {
  48.       temp = (-1 *(i*30-90))/((360/M_PI)/2);
  49.       CO = -1 * (H *(sin(temp)));
  50.       CA = H * (cos(temp));
  51.     }
  52.     else if (i >3 && i<=6)
  53.     {
  54.       temp = (i*30-90)/((360/M_PI)/2);
  55.       CO =H * (sin(temp));
  56.       CA =H * (cos(temp));
  57.     }
  58.     else if (i >6 && i<=9)
  59.     {
  60.       temp = (-1*(i*30-270))/((360/M_PI)/2);
  61.       CO = H * (sin(temp));
  62.       CA= -1 * (H * (cos(temp)));
  63.     }
  64.     else if (i >9 && i <=12)
  65.     {
  66.       temp =(i*30-270)/((360/M_PI)/2);
  67.       CO = -1* (H * (sin(temp)));
  68.       CA = -1 *(H *(cos(temp)));
  69.     }
  70.     X= x + CA;
  71.     Y = y + CO;
  72.     line(x,y,X,Y);
  73.   }
  74.   setcolor(BLANCO);
  75.   setfillstyle(SOLID_FILL,BLANCO);
  76.   fillellipse(x,y,H-(H*0.1),H-(H*0.1));
  77.   while(!kbhit())
  78.   {
  79.     gettime(&h);
  80.     setcolor(NEGRO);
  81.     if(h.ti_hour > 12)
  82.     h.ti_hour = h.ti_hour - 12;
  83.     s= h.ti_sec +(float)((float)h.ti_hund / 100);
  84.     m = h.ti_min + ((s*100/60)/100);
  85.     ho = h.ti_hour + ((m*100/60)/100);
  86.     sprintf(es,"%d : %d : %d.%d",h.ti_hour,h.ti_min,h.ti_sec,h.ti_hund);
  87.     setfillstyle(SOLID_FILL,GRIS);
  88.     bar(100,425,220,450);
  89.     outtextxy(100,425,es);
  90.     //------->Segundero
  91.     setlinestyle(SOLID_LINE,1,1);
  92.     setcolor(ROJO);
  93.     if(s >0 && s <=15)
  94.     {
  95.       temp = (-1 *(s*6-90))/((360/M_PI)/2);
  96.       CO = -1 * ((H-(H*0.1)) *(sin(temp)));
  97.       CA = (H-(H*0.1)) * (cos(temp));
  98.     }
  99.     else if (s >15 && s<=30)
  100.     {
  101.       temp = (s*6-90)/((360/M_PI)/2);
  102.       CO =(H-(H*0.1)) * (sin(temp));
  103.       CA =(H-(H*0.1)) * (cos(temp));
  104.     }
  105.     else if (s >30 && s<=45)
  106.     {
  107.       temp = (-1*(s*6-270))/((360/M_PI)/2);
  108.       CO = (H-(H*0.1)) * (sin(temp));
  109.       CA= -1 * ((H-(H*0.1)) * (cos(temp)));
  110.     }
  111.     else if (s >45 && s <=60)
  112.     {
  113.       temp =(s*6-270)/((360/M_PI)/2);
  114.       CO = -1* ((H-(H*0.1)) * (sin(temp)));
  115.       CA = -1 *((H-(H*0.1)) *(cos(temp)));
  116.     }
  117.     Xs= x + CA;
  118.     Ys = y + CO;
  119.     line(x,y,Xs,Ys);
  120.     //------> Minutero
  121.     setlinestyle(SOLID_LINE,1,2);
  122.     setcolor(GRISO);
  123.     if(m >0 && i <=15)
  124.     {
  125.       temp = (-1 *(m*6-90))/((360/M_PI)/2);
  126.       CO = -1 * ((H-(H*0.1)) *(sin(temp)));
  127.       CA = (H-(H*0.1)) * (cos(temp));
  128.     }
  129.     else if (m >15 && m<=30)
  130.     {
  131.       temp = (m*6-90)/((360/M_PI)/2);
  132.       CO =(H-(H*0.1)) * (sin(temp));
  133.       CA =(H-(H*0.1)) * (cos(temp));
  134.     }
  135.     else if (m >30 && m<=45)
  136.     {
  137.       temp = (-1*(m*6-270))/((360/M_PI)/2);
  138.       CO = (H-(H*0.1)) * (sin(temp));
  139.       CA= -1 * ((H-(H*0.1)) * (cos(temp)));
  140.     }
  141.     else if (m >45 && m <=60)
  142.     {
  143.       temp =(m*6-270)/((360/M_PI)/2);
  144.       CO = -1* ((H-(H*0.1)) * (sin(temp)));
  145.       CA = -1 *((H-(H*0.1)) *(cos(temp)));
  146.     }
  147.     Xm= x + CA;
  148.     Ym = y + CO;
  149.     line(x,y,Xm,Ym);
  150.     //----------->Hora
  151.     setlinestyle(SOLID_LINE,1,3);
  152.     setcolor(NEGRO);
  153.     if(ho >0 && ho <=3)
  154.     {
  155.       temp = (-1 *(ho*30-90))/((360/M_PI)/2);
  156.       CO = -1 * ((H-(H*0.3)) *(sin(temp)));
  157.       CA = (H-(H*0.3)) * (cos(temp));
  158.     }
  159.     else if (ho >3 && ho<=6)
  160.     {
  161.       temp = (ho*30-90)/((360/M_PI)/2);
  162.       CO =(H-(H*0.3)) * (sin(temp));
  163.       CA =(H-(H*0.3)) * (cos(temp));
  164.     }
  165.     else if (ho >6 && ho<=9)
  166.     {
  167.       temp = (-1*(ho*30-270))/((360/M_PI)/2);
  168.       CO = (H-(H*0.3)) * (sin(temp));
  169.       CA= -1 * ((H-(H*0.3)) * (cos(temp)));
  170.     }
  171.     else if (ho >9 && ho <=12)
  172.     {
  173.       temp =(ho*30-270)/((360/M_PI)/2);
  174.       CO = -1* ((H-(H*0.3)) * (sin(temp)));
  175.       CA = -1 *((H-(H*0.3)) *(cos(temp)));
  176.     }
  177.     Xh= x + CA;
  178.     Yh = y + CO;
  179.     line(x,y,Xh,Yh);
  180.     setcolor(BLANCO);
  181.     setlinestyle(SOLID_LINE,1,1);
  182.     line(x,y,Xs,Ys);
  183.     setlinestyle(SOLID_LINE,1,2);
  184.     line(x,y,Xm,Ym);
  185.     setlinestyle(SOLID_LINE,1,3);
  186.     line(x,y,Xh,Yh);
  187.   }
  188.  
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #3 en: Domingo 27 de Junio de 2004, 09:05 »
0
Perdoname, pero no quise ponerme a revisar tu programa, entre otras cosas por que me parece que no esta completo.
Adjunto un programita que hace girar una aguja, creo que puedes aplicarlo a tu programa.
Exito ! ! !
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #4 en: Viernes 2 de Julio de 2004, 04:17 »
0
;) HOLA!! lastima que noleiste el codigo, se que es largo y tal vez me complique demasiadolavida,pero este reloj a comparación del tuyo pone las lineas para definir horas y minutos, y mi codigo no hace girar la manecilla, lo que hace mi codigo es poner la posición de las manecillas exactamente (según yo) donde deben estar según la hora, minutos, segundos y sentecimas de segundo, no cambia la manecilla del segundo cada segundo, si no que cada centesima de segundo cambia la posición del segundero por ejemplo si esta en 50 centesimas de segundoe l segundero esta a la mitad, si el segundero esta en 30 segundos el minutero esta a la mitad del minuto, y si el minutero esta en 30 minutos la hora marca a la mitad de las 2 horas (de la hora actual y de la hora siguiente), nada tonto mi codigo, aunque largo, y lo pongo tan largo por que hago un analisis distinto según el cuadrante de la manecilla tal vez revice tu codigo bien y vea tu forma de hacerlo sin tana ravoltura y tal vez me ayudaría, debo destacar yo uso la hora es decir 1, 2, 3, 4, 5 etc. y no un grado de pi, y me acomode más haciendolo con un analisis de coordenanas y no de angulos, bueno Gracias.y no puse el codigo completo pues no es necesario, el codigo que puse es tooodo lo que dibuja las manecillas y como las dibuja tambien cada cuadno las dibuja (while) el que cada centesima cambie la hora hace el movimiento.
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #5 en: Martes 13 de Julio de 2004, 17:18 »
0
HOLA!! bueno después de investigar mucho sobre gráficos supe el error espeor que alguein lo lea, el error es en primera usar graficos por medio de BGI pero bueno eso no es tanto, y el segundo es que después de dibujar las lineas y antes de borrarla debo poner retrasos eso evita que parpadee, bueno espero le sirva a alguien, para hacer un retraso es así:
Código: Text
  1.  
  2.   while ((inportb(0x03da) & 8) != 0);
  3.   while ((inportb(0x03da) & 8) == 0);
  4.  
  5.  

bueno así se quita el efecto de parpadeo o snow.
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

GUILLERMO4112

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #6 en: Viernes 16 de Julio de 2004, 18:15 »
0
creo que tu proyecto es uno de los mas interesantes para tomar conciencia de las desventajas actuales de las primitivas librerias BGI que actualmente hoy solo podemos considerar de didacticas. Yo soy nuevo en esto pero me he dado cuenta de ello y te felicito por tu cuestionamiento y solucion respecto a tu reloj lo que me parece muy interesante para tener en cuenta. TE COMENTO QUE YO ESTOY BUSCANDO REEMPLAZAR LAS BGI USANDO ALGUNA LIBRERIA RAPIDA QUE UTILIZE LAS EXTENSIONES DE LA BIOS para la norma vesa 1.2, ya que la tienen por defecto la mayoria de las PCS. Tengo el turbo c 3.0 para DOS y se que si no quiero usar las BGI uno puede lograr mas velocidad y mas profesionalidad en sus programas llamando directamente al modo grafico por la INT de la bios si tienes instalado dichas extensiones SVGA.
PERO AHORA BIEN..... SE NECESITAN LAS LIBRERIAS PARA ESE MODO QUE PUEDEN SER HECHAS EN ASM PERO YO NO SE COMO ES ESO POR LO QUE ESTOY BUSCANDO ALGUNA HECHA. PUSE UN AVISO EN ESTE FORO SI SABES ALGO de algun lugar que pueda bajarmela AVISAME PORFAVOR.
SALUDOS.

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Consejo Con Graficos
« Respuesta #7 en: Sábado 17 de Julio de 2004, 04:24 »
0
HOLA!! bueno estas de buena suerte, pues yo estoy haciendo unalibrería de eso, usando VESA pero todavia no la termino, pues me flatan muchas cosas, pues no solo es inicalizar el modo graficos por medio de vesa si no que al no ser compatible con el BGI de borland (o eso tnego entendido) pues tengo que hacer toodas las funciones, y buenome guio por un tutorialque estoy leyendo, peor sin embargo no viene todo el problema principal que tengo es matematico para hacer las funciones de algunas figuras sine mbargo no tengomucho conocimiento de geometría analítica, de todos modos la estoy empezando a hacer y no tengo mucho, así que no creo uqe te sirva de mucho la que yo tengo, entonces te voya  poner el link de la página en la cual yo me baso:

Artículos de Santiago Romero

ahi busca la sección que dice Curso de Programación Gráfica

suerte.
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."