We pass `Cartesian4`s where `Cartesian3`s are expected if we don't care about the `w` component. Most of the time, we only need the `w` component to be `0.0` or `1.0` when multiplying by a `Matrix4`. After that, its treated like a `Cartesian3`.

Say point is a `Cartesian4` and `normal` is a `Cartesian3`. Using `Cartesian4.dot` would result in a `NaN` because `normal.w` is `undefined`.