RSAGL.Math.AbstractVector
Description
Provides generic typeclasses for common operations among many types: addition, subtraction, scalar multiplication, magnitude, and zero.
- class (AbstractZero v, AbstractAdd v v, AbstractSubtract v v, AbstractScale v) => AbstractVector v
- class AbstractZero a where
- zero :: a
- class AbstractAdd p v | p -> v where
- add :: p -> v -> p
- class AbstractSubtract p v | p -> v where
- sub :: p -> p -> v
- class AbstractScale v where
- scalarMultiply :: RSdouble -> v -> v
- class AbstractMagnitude v where
- abstractScaleTo :: (AbstractScale v, AbstractMagnitude v) => RSdouble -> v -> v
- abstractSum :: (AbstractAdd p v, AbstractZero p) => [v] -> p
- abstractAverage :: (AbstractAdd p v, AbstractSubtract p v, AbstractVector v, AbstractZero p) => [p] -> p
- abstractDistance :: (AbstractMagnitude v, AbstractSubtract p v) => p -> p -> RSdouble
Documentation
class (AbstractZero v, AbstractAdd v v, AbstractSubtract v v, AbstractScale v) => AbstractVector v Source
A convenience class for many vector types.
Instances
class AbstractZero a whereSource
A data type that has an additive identity.
Instances
class AbstractAdd p v | p -> v whereSource
A data type that supports addition.
a
addzero = a
Instances
| AbstractAdd Double Double | |
| AbstractAdd Float Float | |
| AbstractAdd Integer Integer | |
| AbstractAdd RSdouble RSdouble | |
| AbstractAdd RSfloat RSfloat | |
| AbstractAdd BoundAngle Angle | |
| AbstractAdd Angle Angle | |
| AbstractAdd Vector3D Vector3D | |
| AbstractAdd Point3D Vector3D | |
| AbstractAdd a b => AbstractAdd [a] [b] | |
| HasResolution a => AbstractAdd (Fixed a) (Fixed a) | |
| AbstractAdd a a' => AbstractAdd (x -> a) (x -> a') | |
| (AbstractAdd a a', AbstractAdd b b') => AbstractAdd (a, b) (a', b') |
class AbstractSubtract p v | p -> v whereSource
A data type that supports subtraction.
a
suba = zero
Instances
| AbstractSubtract Double Double | |
| AbstractSubtract Float Float | |
| AbstractSubtract Integer Integer | |
| AbstractSubtract RSdouble RSdouble | |
| AbstractSubtract RSfloat RSfloat | |
| AbstractSubtract BoundAngle Angle | |
| AbstractSubtract Angle Angle | |
| AbstractSubtract Vector3D Vector3D | |
| AbstractSubtract Point3D Vector3D | |
| AbstractSubtract a b => AbstractSubtract [a] [b] | |
| HasResolution a => AbstractSubtract (Fixed a) (Fixed a) | |
| AbstractSubtract a a' => AbstractSubtract (x -> a) (x -> a') | |
| (AbstractSubtract a a', AbstractSubtract b b') => AbstractSubtract (a, b) (a', b') |
class AbstractScale v whereSource
A data type that supports scalar multiplication.
scalarMultiply 0 a = zero
Methods
scalarMultiply :: RSdouble -> v -> vSource
Instances
| AbstractScale Double | |
| AbstractScale Float | |
| AbstractScale RSdouble | |
| AbstractScale RSfloat | |
| AbstractScale Angle | |
| AbstractScale Vector3D | |
| AbstractScale a => AbstractScale [a] | |
| HasResolution a => AbstractScale (Fixed a) | |
| AbstractScale a => AbstractScale (x -> a) | |
| (AbstractScale a, AbstractScale b) => AbstractScale (a, b) |
class AbstractMagnitude v whereSource
A data type that supports scalar magnitude.
magnitude (scalarMultiply (recip $ magnitude a) a) = 1
Instances
abstractScaleTo :: (AbstractScale v, AbstractMagnitude v) => RSdouble -> v -> vSource
Force a vector to the specified magnitude.
abstractSum :: (AbstractAdd p v, AbstractZero p) => [v] -> pSource
Sum of a list.
abstractAverage :: (AbstractAdd p v, AbstractSubtract p v, AbstractVector v, AbstractZero p) => [p] -> pSource
Average of a list.
abstractDistance :: (AbstractMagnitude v, AbstractSubtract p v) => p -> p -> RSdoubleSource
Distance between two points, based on the magnitude of the difference.