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:

(**a**_{x}, **a**_{y}, **a**_{z})

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

**a _{x}** = (

**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

|**a _{x}**| = AC / AD

This sign of **a _{x}** 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, **a _{x}** is linear in the first argument, i.e., for any number

*c*we have

(*c***a**)** _{x}** =

*c*(

**a**),

_{x}and for any two vectors **a** and **b** we have

(**a** + **b**)** _{x}** =

**a**+

_{x}**b**.

_{x}The operator is inverse-linear in the second operator:

**a**_{(cx)} = *c*^{−1} (**a _{x}**)

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:

**a _{x}** =

**x**⇔ ‖

_{a}**a**‖ = ‖

**x**‖

This value **a _{x}** =

**x**then equals the cosine of the angle between

_{a}**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:

**a _{x}** = 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 **a _{x}** puts

**a**in a high position and

**x**in a low position, just as in a fraction.