hehe, math pedantry.
You can go into alot of detail about what-is-what. Vectors, scalars, pseudo-scalars, bivectors etc. are analogous to types in the math world. So a scalar and a pseudo-scalar can be written as a real number, but mean subtly different things. So some functions accept certain types, even though the number of reals are the same. For our purposes, the difference is how the value is interpreted in a geometric context.
Vectors are sometimes used just like arrays to collect math variables up (general use). In a geometric context a Euclidean vector denotes simultaneously a direction and a magnitude in a Euclidean vector space (what we are dealing with, ‘normal’ geometry).
[quote]And for rotation not being a vector I’m not totally sure about that, since the way I think about it, is having the rotationAngle can give me the updated direction? and I would use rotational velocity for its magnitude? Or am I just confusing myself
[/quote]
Rotation is the classic example of where the subtleties creep in (in a Euclidean vector space). So the angle between two vectors is a firm concept for a Euclidean vector space (in all dims), it always considered positive. The problem starts when you want a polarity attached. E.g. in 2D, what is the angle clockwise between vector A and B? The clockwise bit is an additional property of the vector space, which needs to be defined. So when you have angles against a global handedness of the space, your new signed angular quantity is something (subtly) different to the old one (even though both can be represented as reals). So the signed version is a pseudo scalar whereas the first is a plain scalar.
So rotation is not really a vector quantity, in 2D is a pseudo scalar. In 3D it has three components, but they are related in a weird way and have their own type SO(3). You can’t really call them vectors or psuedo vectors because they won’t go into any function that normally accepts vectors and compute anything that makes sense.
All of this is not that important to know. We all have our own internal heuristics when we want to practically apply coding in geometric space. Mine is “rotation is a pain in the butt”, and its the reason why we have to have the tan2 function in 2D (the quadrant aware version of tan), and quaternions in 3D. Whenever I find my rotation code is buggy or bloaty (like lots of ifs to determine an angle polarity), I start checking where I can use the tan2 function.
e.g. http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htm