/** * Find the orthogonal projection of this vector onto another vector. * * @param v vector onto which instance must be projected * @return projection of the instance onto v * @throws IllegalArgumentException if v is not the same size as this */ public ArrayFieldVector<T> projection(ArrayFieldVector<T> v) { return (ArrayFieldVector<T>) v.mapMultiply(dotProduct(v).divide(v.dotProduct(v))); }