Newer
Older
Import / research / signals-slots / src / core / numbers.h
/*

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:
};