Portability | non-portable |
---|---|

Stability | experimental |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Safe Haskell | Trustworthy |

4-D Vectors

# Documentation

A 4-dimensional vector.

V4 !a !a !a !a |

Monad V4 | |

Functor V4 | |

Typeable1 V4 | |

Applicative V4 | |

Foldable V4 | |

Traversable V4 | |

Distributive V4 | |

Traversable1 V4 | |

Foldable1 V4 | |

Apply V4 | |

Bind V4 | |

Additive V4 | |

Metric V4 | |

Core V4 | |

R1 V4 | |

R2 V4 | |

R3 V4 | |

R4 V4 | |

Trace V4 | |

Affine V4 | |

Eq a => Eq (V4 a) | |

Fractional a => Fractional (V4 a) | |

Data a => Data (V4 a) | |

Num a => Num (V4 a) | |

Ord a => Ord (V4 a) | |

Read a => Read (V4 a) | |

Show a => Show (V4 a) | |

Ix a => Ix (V4 a) | |

Storable a => Storable (V4 a) | |

Epsilon a => Epsilon (V4 a) |

vector :: Num a => V3 a -> V4 aSource

Convert a 3-dimensional affine vector into a 4-dimensional homogeneous vector.

point :: Num a => V3 a -> V4 aSource

Convert a 3-dimensional affine point into a 4-dimensional homogeneous vector.

normalizePoint :: Fractional a => V4 a -> V3 aSource

Convert 4-dimensional projective coordinates to a 3-dimensional
point. This operation may be denoted, ```
euclidean [x:y:z:w] = (x/w,
y/w, z/w)
```

where the projective, homogenous, coordinate
`[x:y:z:w]`

is one of many associated with a single point ```
(x/w,
y/w, z/w)
```

.

A space that has at least 1 basis vector `_x`

.