FANDOM

1.062 Páginas

Ang Binarios

Representación binaria de ángulos.

Los Ángulos son usados por el motor de Doom para describir direcciones, tales como definir de qué manera se está enfrentando un personaje u objeto.

Internamente, los ángulos se almacenan como valores enteros de 32 bits sin signo, con el cero representando el este o el borde derecho del mapa. Este sistema es conocido como Sistema Binario de Medición Angular o BAMS (por Binary Angular Measurement System). Los  valores crecientes representan ángulos cada vez más hacia la izquierda, usando la gama completa de precisión de 32 bits sin signo de para representar un círculo completo.

De este modo, al norte está representado (en hexadecimal) por 0x40000000, el oeste por 0x80000000 y el sur por 0xC0000000. El nordeste (45 grados) es entonces 0x20000000.

Observe que en este sistema es posible sumar y restar los valores de los ángulos, y los resultados se normalizan de forma automática; los valores irán entre cero y un poco menos de un círculo completo, porque la aritmética sin signo se lleva a cabo en módulos con el tamaño de la palabra de 32 bits.

Los 32 bits se pueden considerar como una fracción de un círculo, es decir, como una fracción binaria con una coma decimal implícita en el extremo izquierdo. Además, si un valor de ángulo se considera como una cantidad con signo, entonces los valores negativos representan la rotación en la dirección opuesta (en sentido horario). El valor más cercano a un grado en este sistema es 0xb60b60.


Un valor de ángulo se puede comprimir fácilmente dejando fuera los bits menos significativos. Por lo tanto, los ángulos en los archivos WAD se dan como valores cortos de 16 bits. Estos valores se expanden (desplazado hasta 16 bits) durante la carga. Las funciones trigonométricas seno, coseno y tangente se implementan utilizando tablas de búsqueda. El valor del ángulo se comprime en un índice para su uso con estas tablas desplazando hacia abajo 19 bits, lo que resulta en un valor entre 0 y 8191 al que se refiere como un "ángulo fino". La precisión resultante es principalmente adecuada para los fines del juego y de la representación. Sin embargo, mientras que resulta computacionalmente barato en términos de instrucciones, este método tiene una pena asociada al tamaño de caché, debido al tamaño de las tablas de búsqueda en cuestión.

Hay que tener en cuenta que el desplazamiento de 19 bits trunca el valor del ángulo en no más de 360 / 8192 = 0,044 grados.

Bytes de ángulos

En el formato de mapa de Hexen y en los scripts ACS, particularmente en los argumentos de linedef especiales, los ángulos a menudo se almacenan como un único byte sin signo que van de 0 a 255. Debido a que este formato representa menos de 360 valores distintos, se sacrifica algo de precisión.

Las siguientes fórmulas se pueden utilizar para hacer la conversión entre grados y bytes de ángulos con números comprendidos entre 0 y 359:

  • angbinario = (grados * 256) / 360
  • grados = (<tt>angbinario * 360) / 256</tt>

Dependiendo del contexto, los valores 0 y 255 pueden tener significados especiales. Para hacer girar los poliobjetos, 0 significa girar exactamente 360º, mientras que 255 significa girar perpetuamente.

Rotación de planos

ZDoom y los source ports compatibles, como Eternity Engine, permite que se puedan girar los planos.

Siguiendo una convención adaptada del motor de Build, estos ángulos comprendidos entre 0 y 359, comienzan con 0 hacia el norte y progresan en una dirección en sentido horario, contrariamente al usual sistema de coordenadas empleadas por el motor de Doom.

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.

También en FANDOM

Wiki al azar