Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sobre La Forma De Los Pixels

Iniciado por Vivael13h, 28 de Agosto de 2005, 06:24:13 PM

« anterior - próximo »

Vivael13h

 Ántes de nada, saludos a todos. Hace bastante que no posteo por aquí.

Resulta que me he comprado un ordenata nuevo, y me he encontrado con curioso fenómeno: ¡Los círculos me salen redondos!. Me explico:

Repasando viejos programas sobre mi amado modo 13h, encontré uno que hice sobre primitivas de dibujo. Recuerdo que dibujar un círculo me daba muchos problemas, porque no me quedaba del todo redondo. El proceso es sencillo: uso las fórmulas de la circunferencia en coordenadas polares: x=radio*cos(ángulo), y=radio*sen(ángulo), de tal manera que voy calculando cada punto y pintándolo en pantalla. En los monitores cuadrados de toda la vida, este programa dibuja una elipse. Me volví loco hasta que averigüé que era debido a la forma de los pixels. Como la resolución del 13h (320x200) no es cuadrada, los píxeles no son cuadrados, si no rectangulares, más altos que anchos.

Para solucionarlo, descubrí que tenía que tener en cuenta el factor de aspecto de una resolución cuadrada, así que modifiqué el programa, dividiendo la coordenada y entre 1.2. Y así me quedaban redonditos, estupendos.

El problema (y ya acabo el tocho) es que mi nuevo flamante portátil tiene una pantalla de esas panorámicas de 15.4", y me he dado cuenta de que los círculos salen redondos tanto si mantengo la relación de aspecto como si no. Y aquí ya me he descolocado.

Me imagino (igual digo una estupidez), que en una pantalla de estas características los pixels no sean tan rectangulares, por lo que en el modo 13h sean un poco más cuadrados. Esto explicaría por qué, si no uso el factor de aspecto,  un círculo sale circular (ya me entendeis). Pero, por esa regla de tres, no debería deformarse cuando sí que la uso?. ¿Existe algún tipo de ajuste interno del monitor o algo así que desconozco? Este expediente x me tiene desconcentrado.
lgún día volverá el 13h

zupervaca

 siempre dependera de la resolucion a lo que lo hagas, si es un 15.4" pero usas una resolucion proporcional, el elipse, circulo o lo que sea lo veras bien, pero si por ejemplo pones 1024x768 lo veras estirado

saludos

pd: si no lo entiendes sorry por que no se explicarlo mejor jeje

Vicente

 Hola,

yo supongo que es que los pixeles de tu monitor ahora si son cuadrados, da igual que tengas mas ancho que alto. Si pones una resolución más cuadrada lo que va a hacer el monitor es quitarte espacio por los lados, o hacerte los pixels más grandes, pero no estirarlos, o eso hace mi portatil...

Un saludo!

Vicente

TheAzazel

 Exactamente, como te ha dicho Vicente... los pixeles son cuadrados, da igual el tamaño de tu monitor y la resolucion.... por lo que un circulo sera un circulo... aumentar o variar la resolucion, aunq sea un poco rara(como la de tu portatil al ser panaromica) solo te servira para tener mas espacio de trabajo.
Eso de que al menter la correccion de aspecto de un 20%... y que se siga viendo circular..ya me desencaja...algo haces raro... pq si estas haciendo a proposito el circulo un 20% mas "alto" que "ancho" lo deberias de ver asi..... a ver si no te llega el ojo :)

zupervaca

 ¿alguien ha probado un juego en una pantalla panoramica a 1024x768?, se ve estirado, asi que por favor no le digais esas cosas y no lo lieis mas

saludos

sés

 ¿Ein?
Claro que la resolución y el tamaño del monitor afecta al tamaño de los pixels.

Toda la vida se han visto algo alargados los pixels en 320x200. En un monitor de proporciones normales (4:3), los píxels se ven cuadrados en resoluciones proporcionales (320x240, 640x480, 1024x768...).
Divide el ancho por el alto. Si te da 1'3333 (4:3) se verán cuadrados.

Si tienes un monitor panorámico, creo que la proporción es 16:9

Espero que esto te aclare un poco.
Soy indeciso... ¿o no?

TheAzazel

 Quizas este equivocado pero sigo pensando que el tamaño del pixel en una panoramica y a las resoluciones de hoy en dia.. es el mismo....los pixeles son cuadrados!
Si no, menuda historia...tendriamos que estar viendo que resolucion tenemos y andar con factores de correccion para que un circulo fuera un circulo y una cuadrado un cuadrado....

Otra historia es utilizar resoluciones con otras relaciones de tamaño distintas a la 4:3.... por ejemplo, eso de probar a jugar a un juego a 1024x768 en una panoramica.... la relacion de tamaño es la 16:9 luego tienes dos opciones para jugar a dicho juego en tu panoramica:

-Jugar en resolucion nativa de tu panoramica..con lo que veras la imagen alargada pero no por los pixels..si no porque 1024 son sampleados a quizas 1280(o lo que sea) y el alto no puede ser sampleados pq seguira siendo 768 pixels....

-Segunda opcion que es la que yo utilizo.... juego a 1024x768 pero en vez de hacer que se sample esta imagen a la resolucion nativa de mi monitor panoramico...existe una opcion la cual te centra la imagen y te deja los dos lados negros...asi pierdes el exceso de tamaño de tu panoramica pero puedes jugar a 1024x768 con un aspecto normal

Y sigo pensando que no es por el tamaño del pixel..es por la resolucion... estare equivocado? pues lo mismo, pero yo creo que cuando decis que el tamaño del pixel si se modifica...en realidad es por el upsampling que se realiza para acoplar una resolucion en otra... y hay pixels que habra que duplicar (caso TFT) o hacer lo que se tenga que hacer....
Que alguien me corrija para no vivir mas en un engaño :P

zupervaca

 a eso nos referimos TheAzazel, la imagen se estira, los tfts nunca cambian de resolucion, yo tengo un tft digital en el protatil que usa antialias para simular los pixels que "faltan", aprovecho para decir que este es el motivo de por que en los tfts analogicos vemos moverse los pixels, estoy seguro que el portatil de Vivael13h tiene una tecla llamada "fn" o algo parecido que pulsandola con alguna tecla de funcion activaras o desactivaras el modo "estirar tapiz" de los tft (no obstante desde windows podras hacerlo), pero no te aconsejo usarlo ya que a resoluciones proporcionales pero no la nativa del tft veras que los limites de pantalla no se corresponden con los bordes del tft, que es el caso uno que dice TheAzazel para jugar a juegos, lo mejor es que uses siempre la resolucion nativa del tft

saludos

Vicente

 Hola,

yo tengo un monitor de con resolución nativa 1920x1200, y he probado a ponerlo a 1024x768, y tiene razón zupervaca, los pixels se estiran. En cambio, a otras resoluciones como 1600x1200, que es la que uso normalmente para jugar porque la otra muchos no la soportan o se me muere el portatil, me deja bordes negros a los lados para no estirar la imagen. Un saludo!

Vicente

TheAzazel

 Al menos nos hemos aclarado, pensabamos lo mismo :)

aunque ojito..que los pixeles siguen siendo CUADRADOS en una TFT panoramica  lo que pasa es que su resolucion no guarda el ratio 4:3 si no 16:9... y para "emular" una tiene que hacer un sampling... ya que como zupervaca indica, una TFT tiene los mismos pixels siempre(su resolucion nativa) y para emular las otras pues hace sampling... y por eso a veces, las cosas no se ven como debieran jeje pero no por los pixels... q SI SON CUADRADOS.

Vicente, cuando pones 1024x768 en una resolucion nativa de 1920x1200 se te estira pero porque 1024*1.875=1920 no siendo asi 768*1.875=1440...  luego, si nativamente soportara 1920x1440 seguira viendose bien... pero como no...pues digamos que se escala mas en un eje que en el otro. Esto si quieres utilizar toda la TFT..que ya dije que cuando yo juego...utilizo 1024x768 y prefiero dejar unos bordes negros que ver todo un poco deforme a no ser que el game me permita mi resolucion nativa...

Si resulta que los pixels no son cuadrados...please, sacarme de mi ignorancia eh? q rectificar es de sabios pero vamos, creo que todos coincidimos que es un problema de resoluciones..no de pixels... lo que nos deja con la misma duda que vivael13h...


CitarEl problema (y ya acabo el tocho) es que mi nuevo flamante portátil tiene una pantalla de esas panorámicas de 15.4", y me he dado cuenta de que los círculos salen redondos tanto si mantengo la relación de aspecto como si no. Y aquí ya me he descolocado.

Eso es lo que no entiendo....supongo q algo estara haciendo mal.... q pensais??

saludos

sés

 En un CRT tenemos el tamaño del punto (dot pitch). Eso es una cosa y el pixel es otra.

Yo siempre me he referido al pixel como al mínimo punto en modo de video actual.

Cuando decimos que ponemos un modo de video de 1024x768, nos referimos a PIXELS, y estos sí cambian según el monitor y la resolución.

Hablando de un TFT es más complicado, porque también tiene resolución y la dan en pixels, con lo que el lío está asegurado.

El problema es llamar a las dos cosas pixels. Yo me quedo con los pixels del modo de video, que es lo que "veo" desde el lado del programador.

Dejo un par de enlaces sobre el tema:
http://pchardware.org/monitor.php
http://en.wikipedia.org/wiki/Pixel
Soy indeciso... ¿o no?

Vivael13h

 A ver si me explico. En un monitor cuadrado, una resolución cuadrada tendrá pixels "cuadrados" (hablo de pixels lógicos). En una resolución no cuadrada, como es el caso del modo 13h, 320x200, por fuerza los pixels que se ven en pantalla estarán "estirados", ¿no?.

Como mi monitor es panorámico, supongo que a la misma resolución los pixels estén también estirados en horizontal, lo que compensaría el "estiramiento" vertical, haciendo un pixel un poco más cuadrado y produciendo círculos redondos aunque no incluya la relación de aspecto en la fórmula.

Lo que yo no me explico es lo que dice TheAzazel: cuando sí incluyo el factor de aspecto, estoy forzando a que salga deformado, pero no es así. He probado el mismo programa en el otro ordenador (de monitor normal), y sí que se observa que el círculo es una elipse cuando se hace "a pelo", y circular cuando lo modifico con el factor. No creo que haya nada raro, por si acaso, el código es éste:


void Circulo(int xcentro, int ycentro, int radio, unsigned char color)
{
 float angulo=0;
 int x, y;

 do
 {
   x=xcentro+radio*cos(angulo);
   y=ycentro+radio*sen(angulo);
   PutPixel(x, y, color);
   angulo=angulo+0.005;
 }while(angulo<6.28);
}




Si lo hago así, en el monitor nuevo el círculo sale bien.

El factor de aspecto que uso es 1.2. Después de dibujar el círculo, dibujo otro, pero esta vez para calcular el punto y , hago:
y=ycentro+radio*sen(angulo)/1.2

Y resulta que el círculo que sale, en la pantalla panorámica, es IGUAL que el otro.
lgún día volverá el 13h

Vivael13h

 Atención: solucionado.

Resulta que, como estoy tonto, dibujaba el segundo círculo con un color que no se distinguía muy bien del fondo y no se veía bien. Al cambiar el color, se nota que, efectívamente, el segundo círculo está deformado en el sentido horizontal (no insultarme mucho).

Con esto queda demostrado que la resolución y la forma de la pantalla afectan a la forma del pixel y, por tanto, al aspecto final de un gráfico. Lo cual me lleva a pensar en el problema que planteaba TheAzazel:

CitarSi no, menuda historia...tendriamos que estar viendo que resolucion tenemos y andar con factores de correccion para que un circulo fuera un circulo y una cuadrado un cuadrado....

Pués parece que sí, que hay que andar comprobando. Comprobar la resolución actual es fácil, pero ¿cómo podemos saber la forma de la pantalla?.
lgún día volverá el 13h

Zaelsius

 Quizá comprobando la proporción alto:ancho de la resolución máxima soportada.. que deberia ser siempre 4:3 en un CRT, y la nativa en una TFT.

TheAzazel

 Si ya decia yo, que algo raro estabas haciendo para no ver la deformidad programada a golpe de teclado  :D

pues solo se puede comprobar la resolucion horizontal y vertical, y como dice Zaelsius...que sea una 4:3 ya que si no... aparecera deformado...
de todos modos, yo de eso no me preocuparia mucho.... que el usuario escoja resoluciones standard(4:3) y fuera, a no ser que te quieras comer mucho el tarro. La movida son el creciente numero de tft panoramicas... yo como soy un poco "facha"* pensaria...pues que lo vean alargado o con las bandas negras jajaja y me quito la movida de encima de un plumazo jaja


* completamente metaforico..no la vayamos a liar, que muchos se ganarian muy bien la vida como sacapuntas jajajaja






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.