Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualParadigm Shifter

Posted 26 April 2013 - 02:52 PM

Corned beef hash in the oven.

 

The above post I made is correct. You need to map a float in the range -1.0 to 1.0 into the range 0 - 1023.

 

So you do this:

 

float_val += 1.0; // map into range 0.0 - 2.0

float_val /= 2.0; // map into range 0.0 - 1.0

float_val *= 1023; // map into range 0.0 - 1023.0

 

then cast to an int (EDIT: You probably want to add on 0.5 before the cast for rounding purposes), shift into the required position, and you are done. (logical or all the other components into the 32 bit int as well).

 

For unsigned floats in range 0.0 - 1.0, you don't need to add 1 or divide by 2, just multiply by 1023.

 

For the w value, multiply by 3 (= 2*2 - 1) instead.


#3Paradigm Shifter

Posted 26 April 2013 - 02:44 PM

Corned beef hash in the oven.

 

The above post I made is correct. You need to map a float in the range -1.0 to 1.0 into the range 0 - 1023.

 

So you do this:

 

float_val += 1.0; // map into range 0.0 - 2.0

float_val /= 2.0; // map into range 0.0 - 1.0

float_val *= 1023; // map into range 0.0 - 1023.0

 

then cast to an int, shift into the required position, and you are done. (logical or all the other components into the 32 bit int as well).

 

For unsigned floats in range 0.0 - 1.0, you don't need to add 1 or divide by 2, just multiply by 1023.

 

For the w value, multiply by 3 (= 2*2 - 1) instead.


#2Paradigm Shifter

Posted 26 April 2013 - 02:43 PM

Corned beef hash in the oven.

 

The above post I made is correct. You need to map a float in the range -1.0 to 1.0 into the range 0 - 1023.

 

So you do this:

 

float_val += 1.0; // map into range 0.0 - 2.0

float_val /= 2.0; // map into range 0.0 - 1.0

float_val *= 1023; // map into range 0.0 - 1023.0

 

then cast to an int, shift into the required position, and you are done.

 

For unsigned floats in range 0.0 - 1.0, you don't need to add 1 or divide by 2, just multiply by 1023.


#1Paradigm Shifter

Posted 26 April 2013 - 02:42 PM

Corned beef hash in the oven.

 

The above post I made is correct. You need to map a float in the range -1.0 to 1.0 into the range 0 - 1023.

 

So you do this:

 

float_val += 1; // map into range 0.0 - 2.0

float_val /= 2; // map into range 0.0 - 1.0

float_val *= 1023; // map into range 0.0 - 1023.0

 

then cast to an int, shift into the required position, and you are done.

 

For unsigned floats in range 0.0 - 1.0, you don't need to add 1 or divide by 2, just multiply by 1023.


PARTNERS