Doom Wiki
Advertisement
Doom Wiki

El motor Vanilla Doom utiliza tablas de búsqueda preconstruidas para trigonometría de punto fijo.  En las primeras versiones alfa del código, las tablas se generaban sobre la marcha al inicio mediante las funciones R_InitTables y R_InitPointToAngle en r_main.c. En el motor del juego final, las tablas se calculan previamente y se almacenan en el archivo tables.c.

El motor de Doom representa un ángulo como un valor de 32 bits, dándole 232 =‭ 4.294.967.296‬ posibles valores de ángulo. No puede haber tantos valores en una tabla, por lo que la precisión se reduce primero a 213 = 8.192 valores posibles (los "ángulos finos") para la tabla de búsqueda de seno y coseno. Por lo tanto, cada entrada corresponde a 219 = 524.288 ángulos diferentes. La tabla de tangentes es aún más pequeña, con solo 2.048 valores únicos.

Para todos estos rangos, el valor preciso que se utilizó para generar la entrada en la tabla es el medio correspondiente al que está en el medio del rango. El resultado es que hay una diferencia de 0.02197265625° (la mitad de 360/8192) entre el valor del ángulo "redondeado" y el ángulo utilizado para calcular el resultado.

Uno de los resultados de esta inexactitud es que el movimiento ortogonal no es posible. Esto contribuye a la capacidad de realizar deslizamientos.

Advertisement