Package com.google.common.math
Class LinearTransformation
- java.lang.Object
-
- com.google.common.math.LinearTransformation
-
@GwtIncompatible public abstract class LinearTransformation extends java.lang.Object
The representation of a linear transformation between real numbersx
andy
. Graphically, this is the specification of a straight line on a plane. The transformation can be expressed asy = m * x + c
for finitem
andc
, unless it is a vertical transformation in which casex
has a constant value for ally
. In the non-vertical case,m
is the slope of the transformation (and a horizontal transformation has zero slope).- Since:
- 20.0
- Author:
- Pete Gillin
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LinearTransformation.LinearTransformationBuilder
This is an intermediate stage in the construction process.
-
Constructor Summary
Constructors Constructor Description LinearTransformation()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static LinearTransformation
forNaN()
Builds an instance for datasets which containsDouble.NaN
.static LinearTransformation
horizontal(double y)
Builds an instance representing a horizontal transformation with a constant value ofy
.abstract LinearTransformation
inverse()
Returns the inverse linear transformation.abstract boolean
isHorizontal()
Returns whether this is a horizontal transformation.abstract boolean
isVertical()
Returns whether this is a vertical transformation.static LinearTransformation.LinearTransformationBuilder
mapping(double x1, double y1)
Start building an instance which mapsx = x1
toy = y1
.abstract double
slope()
Returns the slope of the transformation, i.e.abstract double
transform(double x)
Returns they
corresponding to the givenx
.static LinearTransformation
vertical(double x)
Builds an instance representing a vertical transformation with a constant value ofx
.
-
-
-
Constructor Detail
-
LinearTransformation
public LinearTransformation()
-
-
Method Detail
-
mapping
public static LinearTransformation.LinearTransformationBuilder mapping(double x1, double y1)
Start building an instance which mapsx = x1
toy = y1
. Both arguments must be finite. Call eitherLinearTransformation.LinearTransformationBuilder.and(double, double)
orLinearTransformation.LinearTransformationBuilder.withSlope(double)
on the returned object to finish building the instance.
-
vertical
public static LinearTransformation vertical(double x)
Builds an instance representing a vertical transformation with a constant value ofx
. (The inverse of this will be a horizontal transformation.)
-
horizontal
public static LinearTransformation horizontal(double y)
Builds an instance representing a horizontal transformation with a constant value ofy
. (The inverse of this will be a vertical transformation.)
-
forNaN
public static LinearTransformation forNaN()
Builds an instance for datasets which containsDouble.NaN
. TheisHorizontal()
andisVertical()
methods returnfalse
and theslope()
, andtransform(double)
methods all returnDouble.NaN
. Theinverse()
method returns the same instance.
-
isVertical
public abstract boolean isVertical()
Returns whether this is a vertical transformation.
-
isHorizontal
public abstract boolean isHorizontal()
Returns whether this is a horizontal transformation.
-
slope
public abstract double slope()
Returns the slope of the transformation, i.e. the rate of change ofy
with respect tox
. This must not be called on a vertical transformation (i.e. whenisVertical()
is true).
-
transform
public abstract double transform(double x)
Returns they
corresponding to the givenx
. This must not be called on a vertical transformation (i.e. whenisVertical()
is true).
-
inverse
public abstract LinearTransformation inverse()
Returns the inverse linear transformation. The inverse of a horizontal transformation is a vertical transformation, and vice versa. The inverse of theforNaN()
transformation is itself. In all other cases, the inverse is a transformation such that applying both the original transformation and its inverse to a value gives you the original value give-or-take numerical errors. Calling this method multiple times on the same instance will always return the same instance. Calling this method on the result of calling this method on an instance will always return that original instance.
-
-