Covectors as level sets

A covector ω is a stack of parallel lines. ω(v) is the (signed) number of lines you cross going from 0 to v.

vector v    covector ω (gradient direction)    ||| level lines ω·x = k

Covector ω

1.00
0.50

Vector v (drag tip)

1.40
0.80
The classical picture of a covector. A vector is an arrow. A covector is a stack of equally spaced parallel lines: the kernel ω·x = 0 plus its integer translates. Acting on a vector means counting: ω(v) is the signed number of lines that the segment 0 → v crosses. Drag v's tip on the canvas: the integer-valued counter under “crossings” jumps as the arrow tip sweeps past each line.

When ω rotates (slide ω1, ω2), the level-line stack rotates too, and the spacing – equal to 1/|ω| in the plane – tightens as |ω| grows. The numeric value ω(v) = ω1v1 + ω2v2 is just the algebra underneath this picture.