I came across a nice equivalence between the standard index notation for vectors and the vector projection operator. This works for vectors of any dimension, but I’ll explain it for vectors in three dimensions.
A vector a can be expressed by its coordinates in a coordinate system:
(ax, ay, az)
These are three numbers that depend on the chosen coordinate system. Any coordinate system can be described by three vectors x, y and z. Given these three vectors, we can then write the components of a as
ax = (a · x) / ‖x‖².
We can interpret this as a binary operation with arguments a and x. This operator corresponds to the projection of a onto x, expressed in units where x has length one:
Using the points laid out as in this graphic, we can write the operator as
|ax| = AC / AD
This sign of ax is given by the relative directions of AC and AD.
Since this operator only depends on the dot product (a · x) and the norm ‖x‖, its value is independent of the coordinate system in which it is computed.
As a binary operator, ax is linear in the first argument, i.e., for any number c we have
(ca)x = c (ax),
and for any two vectors a and b we have
(a + b)x = ax + bx.
The operator is inverse-linear in the second operator:
a(cx) = c−1 (ax)
The operator is defined for all vectors a and x, except when x is the zero vector.
When the two vectors a and x have the same norm ‖a‖ = ‖x‖, then exchanging the two operands does not change the value:
ax = xa ⇔ ‖a‖ = ‖x‖
This value ax = xa then equals the cosine of the angle between a and x. In the general case, the operator is however not commutative.
The operator is zero if and only if the two vectors are orthogonal:
ax = 0 ⇔ a ⊥ x
These properties are similar to those of scalar division, although this operation is of course not a proper division, since it returns not a vector, and cannot be expressed in terms of products and inverses. Note also how by coincidence, the notation ax puts a in a high position and x in a low position, just as in a fraction.