In 2D ω is most certainly only expressed as a scalar. So how do we end up with a velocity with direction? We can start by expressing both ω and r as a 3D vectors:
\[\begin{pmatrix}0 \\0 \\\omega\end{pmatrix}\times\begin{pmatrix}r_x \\r_y \\0\end{pmatrix}=\begin{pmatrix}-\omega r_y \\\omega r_x\\0\end{pmatrix}=\omega\begin{pmatrix}-r_y \\r_x \\0\end{pmatrix}\]
This is the basis for the following "hack" used to return the velocity vector facing the correct direction, as per Chris Hecker:
where the subscript upside down T is the perpendicular operator (not to be confused with the superscript T which represents transpose of matrix!), that turns r and rotates it counterclockwise by 90 degrees (in a right-handed coordinate system).
\([]_{\times}\) is the operator which turns a vector into its anti-symmetric (or skew-symmetric) matrix
\(R_s\) is referring to the "anti-symmetric matrix" or "cross product matrix" of r.
Linear Velocity of a specific point of a rotating body with translational motion
As stated above, the velocity of a particular point of a body depends on the radius from the centre of mass. What of bodies that are simultaneously rotating and translating at the same time?
Chris Hecker in his article
here, explains that the Chasles' Theorem can be used to break up the motion into linear and angular components and come up with the following equation which gives the linear velocity of a point of a body that is rotating and translating at the same time.
\[v_p=v_o+\omega r_{\perp}\]
Delving into the maths
Consider the following (the diagram is 3D but the maths is the same for 2D)
The center of mass is transformed to the point \(x(t)\) in world space, at time \(t\).
The fixed x, y, and z axes of the body in body space (ie the basis vectors in local space) transform to the vectors \(x^{'} = R(t)_x, y^{'} = R(t)_y\) and \(z^{'} = R(t)_z\) in world space, where \(R\) is the rotation matrix.
The position of point p at time t is given by:
\[p(t)=R(t)p_o+x(t)\]
where \(p_o\) is points p in object (=local) space.
It follows that the velocity of point p is the derivative of the above.
\[\dot{p}=\dot{R}(t)p_o+v\]
\(\dot(R)(t)\) is of course the angular velocity but how do we perform a derivative on it? The following is the method explained in this video
here, which uses the property of the rotation matrix, as follows.
\[R^TR=I\]
Since I is a constant, we can say that:
\[\delta{(R^TR)}=0\]
By using the product rule we can also say that:
\[\delta (R^TR)=\delta(R^T)R+R^T\delta(R)=\dot{R}^T R+R^T\dot{R}\] (the latter expression simply restating using dot notation)
From the above 2 expressions, we can say that:
\[\dot{R}^TR+R^T\dot{R}=0\]
and by making use of the identity \((AB)^T=B^TA^T\),
\[R^T\dot{R}=-\dot{R}^TR=-(R^T\dot{R})^T\]
Note that the first part of the above is the same as the term within the brackets of the last expression, ie the minus of the matrix is equal to its transpose. This is the property of a anti-symmetrix matrix (\(-A=A^T\)).
Specifically, the 3x3 matrix would look like below (ignore for the moment what the actual elements are)
\[R^T\dot{R}=\begin{pmatrix} 0 & -\omega_z^o &\omega_y \\ \omega_z^o &0 &-\omega_x^o \\ -\omega_y^o &\omega_x^o &0 \end{pmatrix} \]
By its very nature, the above only has 3 degrees of freedom and can be expressed as a 3D vector (as we have already seen, the \([]_{\times x}\) is the operator that converts a 3D vector \(\omega^o=(\omega_x^o\,\omega_y^o\,\omega_z^o)\) into a 3x3 skew symmetric matrix.
\[R^T\dot{R}=\begin{pmatrix} 0 & -\omega_z^o &\omega_y \\ \omega_z^o &0 &-\omega_x^o \\ -\omega_y^o &\omega_x^o &0 \end{pmatrix} =[w^o]_{\times}\]
Multiplying both sides of the equation \(R^T\dot{R}=[\omega^o]_{\times}\) by \(R\), gives:
\[\dot{R}=R[\omega^o]_{\times}\]
Replacing \(\dot{R}\) in the velocity equation earlier on, and noting that multiplying the skew-symmetric matrix of a vector with another vector is the same as the cross product, ie \([a]_{\times}b=a\times b\), we can say that:
\[\dot{p}=\dot{R}(t)p_o+v=R[\omega^o]_{\times}p_o+v=R(\omega^o\times p_o)+v\]
where \(\omega^o\) is the angular velocity of the body with the axis of rotation through the centre of mass in local space.
A more useful form is to express the axis of rotataion in world space. This can be done by using a nifty trick of sticking in \(R^T R\) (which is the identify)the above expression as follows:
\[\dot{p}=R[\omega ^o]_{\times}R^T R\, p_o+v\]
Taking a look at \(R[\omega ^o]_{\times}R^T\), note the following identify, by taking its transpose (\(omega^o\) is a skew-symmetric matrix so its transpose is equivalent to multiplying by minus 1):
\[(R[\omega ^o]_{\times}R^T)^T=R[\omega ^o]_{\times}^T R^T=-R[\omega ^o]_{\times}R^T\]
In otherwords, \(R[\omega ^o]_{\times}R^T\) is also a skew-symmetric matrix.
Which means that the entire thing can be written as a cross product matrix of a vector \(\omega\) - a different \(\omega\) from \(\omega^o\)
\[R[\omega ^o]_{\times}R^T=[\omega]_{\times}\]
Noting that \(R\,p_o=p\), the velocity equation can be written as:
\[\dot{p}=R[\omega ^o]_{\times}R^T R\, p_o+v=[\omega]_{\times}p+v=\omega\times p+v\]
Useful References
https://youtu.be/nvDbXi5Sp_I