Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

Fixed point numbers

De Brdoom wiki

O ZDoom comumente representa números de ponto fixo como inteiros de 32 bits, com a parte inteira do número representado armazenada nos 16 bits superiores, e com a parte fracionária (em 65536 avos) armazenada nos 16 bits inferiores.

Em outras palavras, a representação em ponto fixo de um número é esse número vezes 65536.

Para fazer multiplicações e divisões em números de ponto fixo em scripts ACS, você pode usar funções como FixedMul e FixedDiv.

Você pode converter um inteiro para uma representação em ponto fixo desse inteiro simplesmente deslocando o inteiro desejado 16 bits para a esquerda:

 int myCoolInteger = 72;
 int myCoolFixedPointValue = myCoolInteger << 16; //Result is 4718592

Fazendo o caminho inverso é tão fácil quanto...

 int myCoolFixedPointValue = 4718592;
 int myCoolInteger = myCoolFixedPointValue >> 16; //Result is 72

Você também pode especificar números de ponto fixo como literais em scripts ACS:

 int myFixedPointNumber = 1.5;

myFixedPointNumber agora é (1.5 * 65536) = 98304. Se a intenção for um valor inteiro, você deve usar um ponto decimal, por exemplo 4.0, ou usar o deslocamento para a esquerda descrito acima; o ACS não sabe que tipo um número deveria ser.

Veja também