/*
Ideas for special numbers class
-------------------------------
ClampedFloat [ 0.0 to 1.0 ]
special because
- no sign bit needed, always a positive mantisa
- exponent is always negative
- used in Normals, vectors (directions) as opposed to points/vertexs
- standard fixed point eg 32.32 or 16.16 doesn't make sense (wasteful)
in these cases (1.31 fixed point might make sense or a special float type)
floats
| sign bit | mantissa | exponent |
- not great when converting back and forth to integers, too slow.
- not great on embedded hardware which doesn't have floating point operations
fixed 16.16
| 0 to 65536 | 0/65536 to 65536/65536 |
eg: 0 + 1/65536
eg: 10 + 0/65536
eg: 344 + 13255/65536
- Not great when a large range of numbers involved
such as numbers like 0.000000123 or 1230000000.0
vectors:
different ways to represent:
unit vector / normal
-> 2 angles
-> 3 values in the range -1 to 1
-> complex numbers?
-> or just same as a vertex
vertex
-> 2 angles + magnitude (eg a unit vector + magnitude)
-> 3 values from -1 to 1 + magnitude (eg a unit vector + magnitude)
-> 3 values
could use 3 floats, 3 fixed points, 3 integers + 1 for magnitude etc
could have a byte for flags
- flag for format (float, fixed etc)
- flag for if normalized or not (could share unit vector with vertex)
*/
class Vector
{
public:
};