## Uses of Interface
com.io7m.jtensors.parameterized.PVectorReadable2DType

- Packages that use PVectorReadable2DType
  Package | Description
  --- | ---
  com.io7m.jtensors.bytebuffered.parameterized | `ByteBuffer` backed parameterized tensors.
  com.io7m.jtensors.parameterized | Parameterized vector and matrix types.

- - ### Uses of PVectorReadable2DType in com.io7m.jtensors.bytebuffered.parameterized

    Subinterfaces of PVectorReadable2DType in com.io7m.jtensors.bytebuffered.parameterized
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `PVectorByteBuffered2DType<T>` The type of `PVector2DType` values that are also byte buffered.
    `interface` | `PVectorByteBuffered3DType<T>` The type of `PVector3DType` values that are also byte buffered.
    `interface` | `PVectorByteBuffered4DType<T>` The type of `PVector4DType` values that are also byte buffered.

    Classes in com.io7m.jtensors.bytebuffered.parameterized that implement PVectorReadable2DType
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PVectorByteBufferedM2D<T>` A two-element vector type with `double` elements, packed into a `ByteBuffer`.
    `class` | `PVectorByteBufferedM3D<T>` A three-element vector type with `double` elements, packed into a `ByteBuffer`.
    `class` | `PVectorByteBufferedM4D<T>` A four-element vector type with `double` elements, packed into a `ByteBuffer`.

    Methods in com.io7m.jtensors.bytebuffered.parameterized with parameters of type PVectorReadable2DType
    Modifier and Type | Method and Description
    --- | ---
    `void` | PVectorByteBufferedM4D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`
    `void` | PVectorByteBufferedM3D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`
    `void` | PVectorByteBufferedM2D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`

  - ### Uses of PVectorReadable2DType in com.io7m.jtensors.parameterized

    Subinterfaces of PVectorReadable2DType in com.io7m.jtensors.parameterized
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `PVector2DType<T>` The type of two-element vectors that are both readable and writable, and have `double` elements
    `interface` | `PVector3DType<T>` The type of three-element vectors that are both readable and writable, and have `double` elements
    `interface` | `PVector4DType<T>` The type of four-element vectors that are both readable and writable, and have `double` elements
    `interface` | `PVectorReadable3DType<T>` 'Read' interface to phantom-typed three-dimensional vectors with double precision elements.
    `interface` | `PVectorReadable4DType<T>` 'Read' interface to phantom-typed four-dimensional vectors with double precision elements.

    Classes in com.io7m.jtensors.parameterized that implement PVectorReadable2DType
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PVectorI2D<T>` A two-dimensional immutable vector type with `double` elements.
    `class` | `PVectorI3D<T>` A three-dimensional immutable vector type with `double` elements.
    `class` | `PVectorI4D<T>` A four-dimensional immutable vector type with `double` elements.
    `class` | `PVectorM2D<T>` A two-dimensional mutable vector type with `double` elements.
    `class` | `PVectorM3D<T>` A three-dimensional mutable vector type with `double` elements.
    `class` | `PVectorM4D<T>` A four-dimensional mutable vector type with `double` elements.

    Methods in com.io7m.jtensors.parameterized with type parameters of type PVectorReadable2DType
    Modifier and Type | Method and Description
    --- | ---
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`absoluteInPlace(V v)` Calculate the absolute values of the elements in vector `v`, modifying the vector in-place.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`addInPlace(V v0, PVectorReadable2DType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `v0`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`addScaledInPlace(V v0, PVectorReadable2DType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `v0`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampByPVectorInPlace(V v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampInPlace(V v, double minimum, double maximum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMaximumByPVectorInPlace(V v, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMaximumInPlace(V v, double maximum)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMinimumByPVectorInPlace(V v, PVectorReadable2DType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMinimumInPlace(V v, double minimum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,U extends PVectorReadable2DType<T>,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`copy(U input, V output)` Copy all elements of the vector `input` to the vector `output`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`normalizeInPlace(V v)` Returns a vector with the same orientation as `v` but with magnitude equal to `1.0` in `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> void` | PVectorM2D.`orthoNormalizeInPlace(PVectorM2D.ContextPVM2D c, V v0, V v1)` Orthonormalize and the vectors `v0` and `v1`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`scaleInPlace(V v, double r)` Scale the vector `v` by the scalar `r`, saving the result to `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`subtractInPlace(V v0, PVectorReadable2DType<T> v1)` Subtract the vector `v1` from the vector `v0`, saving the result to `v0`.

    Methods in com.io7m.jtensors.parameterized with parameters of type PVectorReadable2DType
    Modifier and Type | Method and Description
    --- | ---
    `static <T> PVectorI2D<T>` | PVectorI2D.`absolute(PVectorReadable2DType<T> v)` Calculate the absolute value of the vector `v`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`absolute(PVectorReadable2DType<T> v, V out)` Calculate the absolute values of the elements in vector `v`, saving the result to `out`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`add(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`add(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`add(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, V out)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`add(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, V out)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`addInPlace(V v0, PVectorReadable2DType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `v0`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`addScaled(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`addScaled(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`addScaled(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double r, V out)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`addScaled(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double r, V out)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`addScaledInPlace(V v0, PVectorReadable2DType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `v0`.
    `static <T> boolean` | PVectorM2D.`almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context, PVectorReadable2DType<T> qa, PVectorReadable2DType<T> qb)` Determine whether or not the vectors `qa` and `qb` are equal to within the degree of error given in `context`.
    `static <T> boolean` | PVectorM2D.`almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context, PVectorReadable2DType<T> qa, PVectorReadable2DType<T> qb)` Determine whether or not the vectors `qa` and `qb` are equal to within the degree of error given in `context`.
    `static <T> boolean` | PVectorI2D.`almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context, PVectorReadable2DType<T> qa, PVectorReadable2DType<T> qb)` Determine whether or not the vectors `qa` and `qb` are equal to within the degree of error given in `context`.
    `static <T> boolean` | PVectorI2D.`almostEqual(com.io7m.jequality.AlmostEqualDouble.ContextRelative context, PVectorReadable2DType<T> qa, PVectorReadable2DType<T> qb)` Determine whether or not the vectors `qa` and `qb` are equal to within the degree of error given in `context`.
    `static <T> double` | PVectorM2D.`angle(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the angle between vectors `v0` and `v1`, in radians.
    `static <T> double` | PVectorM2D.`angle(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the angle between vectors `v0` and `v1`, in radians.
    `static <T> double` | PVectorI2D.`angle(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the angle between the vectors `v0` and `v1` in radians.
    `static <T> double` | PVectorI2D.`angle(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the angle between the vectors `v0` and `v1` in radians.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clamp(PVectorReadable2DType<T> v, double minimum, double maximum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clamp(PVectorReadable2DType<T> v, double minimum, double maximum, V out)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampByPVectorInPlace(V v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampByPVectorInPlace(V v, PVectorReadable2DType<T> minimum, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMaximum(PVectorReadable2DType<T> v, double maximum)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMaximum(PVectorReadable2DType<T> v, double maximum, V out)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMaximumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMaximumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMaximumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMaximumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMaximumByPVectorInPlace(V v, PVectorReadable2DType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `v`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMinimum(PVectorReadable2DType<T> v, double minimum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMinimum(PVectorReadable2DType<T> v, double minimum, V out)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMinimumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`clampMinimumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMinimumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`clampMinimumByPVector(PVectorReadable2DType<T> v, PVectorReadable2DType<T> minimum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`clampMinimumByPVectorInPlace(V v, PVectorReadable2DType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `v`.
    `void` | PVectorWritable2DType.`copyFromTyped2D(PVectorReadable2DType<T> in_v)` Set the current vector to the contents of the input vector.
    `void` | PVectorM4D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`
    `void` | PVectorM3D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`
    `void` | PVectorM2D.`copyFromTyped2D(PVectorReadable2DType<T> in_v)`
    `static <T> double` | PVectorM2D.`distance(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> double` | PVectorM2D.`distance(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> double` | PVectorI2D.`distance(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> double` | PVectorI2D.`distance(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> double` | PVectorM2D.`dotProduct(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> double` | PVectorM2D.`dotProduct(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> double` | PVectorI2D.`dotProduct(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> double` | PVectorI2D.`dotProduct(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`interpolateLinear(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double alpha, V r)` Linearly interpolate between `v0` and `v1` by the amount `alpha`, saving the result to `r`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`interpolateLinear(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double alpha, V r)` Linearly interpolate between `v0` and `v1` by the amount `alpha`, saving the result to `r`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`interpolateLinear(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double alpha)` Linearly interpolate between `v0` and `v1` by the amount `alpha`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`interpolateLinear(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, double alpha)` Linearly interpolate between `v0` and `v1` by the amount `alpha`.
    `static <T> double` | PVectorM2D.`magnitude(PVectorReadable2DType<T> v)` Calculate the magnitude of the vector `v`.
    `static <T> double` | PVectorI2D.`magnitude(PVectorReadable2DType<T> v)` Calculate the magnitude of the vector `v`.
    `static <T> double` | PVectorM2D.`magnitudeSquared(PVectorReadable2DType<T> v)` Calculate the squared magnitude of the vector `v`.
    `static <T> double` | PVectorI2D.`magnitudeSquared(PVectorReadable2DType<T> v)` Calculate the squared magnitude of the vector `v`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`normalize(PVectorReadable2DType<T> v)` Normalize the vector `v`, preserving its direction but reducing it to unit length.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`normalize(PVectorReadable2DType<T> v, V out)` Returns a vector with the same orientation as `v` but with magnitude equal to `1.0` in `out`.
    `static <T,V extends PVectorWritable2DType<T>> void` | PVectorM2D.`orthoNormalize(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, V v0_out, PVectorReadable2DType<T> v1, V v1_out)` Orthonormalize and return the vectors `v0` and `v1` .
    `static <T,V extends PVectorWritable2DType<T>> void` | PVectorM2D.`orthoNormalize(PVectorM2D.ContextPVM2D c, PVectorReadable2DType<T> v0, V v0_out, PVectorReadable2DType<T> v1, V v1_out)` Orthonormalize and return the vectors `v0` and `v1` .
    `static <T> com.io7m.jfunctional.Pair<PVectorI2D<T>,PVectorI2D<T>>` | PVectorI2D.`orthoNormalize(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Orthonormalize and return the vectors `v0` and `v1` .
    `static <T> com.io7m.jfunctional.Pair<PVectorI2D<T>,PVectorI2D<T>>` | PVectorI2D.`orthoNormalize(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Orthonormalize and return the vectors `v0` and `v1` .
    `static <T> PVectorI2D<T>` | PVectorI2D.`projection(PVectorReadable2DType<T> p, PVectorReadable2DType<T> q)` Calculate the projection of the vector `p` onto the vector `q`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`projection(PVectorReadable2DType<T> p, PVectorReadable2DType<T> q)` Calculate the projection of the vector `p` onto the vector `q`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`projection(PVectorReadable2DType<T> p, PVectorReadable2DType<T> q, V r)` Calculate the projection of the vector `p` onto the vector `q`, saving the result in `r`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`projection(PVectorReadable2DType<T> p, PVectorReadable2DType<T> q, V r)` Calculate the projection of the vector `p` onto the vector `q`, saving the result in `r`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`scale(PVectorReadable2DType<T> v, double r)` Scale the vector `v` by the scalar `r`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`scale(PVectorReadable2DType<T> v, double r, V out)` Scale the vector `v` by the scalar `r`, saving the result to `out`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`subtract(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Subtract the vector `v1` from the vector `v0`.
    `static <T> PVectorI2D<T>` | PVectorI2D.`subtract(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1)` Subtract the vector `v1` from the vector `v0`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`subtract(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, V out)` Subtract the vector `v1` from the vector `v0`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T>> V` | PVectorM2D.`subtract(PVectorReadable2DType<T> v0, PVectorReadable2DType<T> v1, V out)` Subtract the vector `v1` from the vector `v0`, saving the result to `out`.
    `static <T,V extends PVectorWritable2DType<T> & PVectorReadable2DType<T>> V` | PVectorM2D.`subtractInPlace(V v0, PVectorReadable2DType<T> v1)` Subtract the vector `v1` from the vector `v0`, saving the result to `v0`.

    Constructors in com.io7m.jtensors.parameterized with parameters of type PVectorReadable2DType
    Constructor and Description
    `PVectorI2D(PVectorReadable2DType<T> in_v)` Construct a vector initialized with the values given in the vector `v`.
    `PVectorM2D(PVectorReadable2DType<T> in_x)` Construct a vector initialized with the values given in the vector `in_x`.

Copyright © 2017 <code@io7m.com> http://io7m.com