Package toxi.geom
Class GVector
java.lang.Object
toxi.geom.GVector
- All Implemented Interfaces:
Serializable
,Cloneable
A double precision, general, dynamically-resizable, one-dimensional vector
class.
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionGVector
(double[] vector) Constructs a new GVector from the specified array elements.GVector
(double[] vector, int length) Constructs a new GVector of the specified length and initializes it by copying the specified number of elements from the specified array.GVector
(int length) Constructs a new GVector of the specified length with all vector elements initialized to 0.Constructs a new GVector from the specified vector.Constructs a new GVector and copies the initial values from the specified tuple.Constructs a new GVector and copies the initial values from the specified tuple.Constructs a new GVector and copies the initial values from the specified tuple. -
Method Summary
Modifier and TypeMethodDescriptionfinal GVector
Creates the vector sum of this vector and the given one (must be equal sized).final GVector
Sets the value of this vector to sum of itself and the specified vectorfinal double
Returns the (n-space) angle in radians between this vector and the vector parameter; the return value is constrained to the range [0,PI].final void
backSolveLUD
(GMatrix LU, GVector b, GVector permutation) LU Decomposition Back Solve; this method takes the LU matrix and the permutation vector produced by the GMatrix method LUD and solves the equation (LU)*x = b by placing the solution vector x into this vector.final void
backSolveSVD
(GMatrix U, GMatrix W, GMatrix V, GVector b) Solves for x in Ax = b, where x is this vector (nx1), A is mxn, b is mx1, and A = U*W*transpose(V); U,W,V must be precomputed and can be found by taking the singular value decomposition (SVD) of A using the method SVD found in the GMatrix class.clone()
Creates a new object of the same class as this object.final double
Returns the dot product of this vector and vector v.boolean
Returns true if the Object o1 is of type GMatrix and all of the data members of o1 are equal to the corresponding data members in this GMatrix.boolean
Returns true if all of the data members of GVector vector1 are equal to the corresponding data members in this GVector.boolean
equalsWithTolerance
(GVector v, double tolerance) Returns true if the L-infinite distance between this vector and vector v is less than or equal to the tolerance parameter, otherwise returns false.final double
get
(int index) Retrieves the value at the specified index value of this vector.int
hashCode()
Returns a hash code value based on the data values in this object.final GVector
interpolateTo
(GVector v, double alpha) Linearly interpolates this vector to the target vector and places the result into a new instance: result = this + (target-this)*alpha.final GVector
interpolateTo
(GVector v, double alpha, InterpolateStrategy strategy) Interpolates the vector towards the given target vector, using the givenInterpolateStrategy
.final GVector
interpolateToSelf
(GVector v, double alpha) Linearly interpolates this vector to the target vector and places result in this vector.final GVector
interpolateToSelf
(GVector v, double alpha, InterpolateStrategy strategy) Interpolates the vector towards the given target vector, using the givenInterpolateStrategy
.final void
invert()
Negates the value of this vector: this = -this.final double
Returns the square root of the sum of the squares of this vector (its length in n-dimensional space).final double
Returns the sum of the squares of this vector (its length squared in n-dimensional space).final void
Multiplies matrix m1 times Vector v1 and places the result into this vector (this = m1*v1).final void
Multiplies the transpose of vector v1 (ie, v1 becomes a row vector with respect to the multiplication) times matrix m1 and places the result into this vector (this = transpose(v1)*m1).final void
Normalizes this vector in place.final GVector
scale
(double s) Scales this vector by the scale factor s and returns result as new vector.final GVector
Scales the values of this vector with the values of the given vector vector (this = this * vector).final GVector
scaleSelf
(double s) Scales this vector by the scale factor s.final GVector
Scales the values of this vector with the values of the given vector vector (this = this * vector).final GVector
set
(double[] vector) Sets the values of this vector to the values found in the array parameter.final GVector
Sets the value of this vector to the values found in vector vector.final GVector
set
(ReadonlyVec2D tuple) Sets the value of this vector to the values in tuplefinal GVector
set
(ReadonlyVec3D tuple) Sets the value of this vector to the values in tuplefinal GVector
set
(ReadonlyVec4D tuple) Sets the value of this vector to the values in tuplefinal GVector
setElement
(int index, double value) Modifies the value at the specified index of this vector.final GVector
setSize
(int length) Changes the size of this vector dynamically.final int
size()
Returns the number of elements in this vector.final GVector
Creates the vector difference of this vector and the given one (must be equal sized).final GVector
Sets the value of this vector to the vector difference of itself and vector (this = this - vector).toString()
Returns a string that contains the values of this GVector.final GVector
zero()
Sets all the values in this vector to zero.
-
Field Details
-
values
public double[] values
-
-
Constructor Details
-
GVector
public GVector(double[] vector, int length) Constructs a new GVector of the specified length and initializes it by copying the specified number of elements from the specified array. The array must contain at leastlength
elements (i.e.,vector.length
>=length
. The length of this new GVector is set to the specified length.- Parameters:
vector
- The array from which the values will be copied.length
- The number of values copied from the array.
-
GVector
public GVector(double[] vector) Constructs a new GVector from the specified array elements. The length of this GVector is set to the length of the specified array. The array elements are copied into this new GVector.- Parameters:
vector
- the values for the new GVector.
-
GVector
Constructs a new GVector from the specified vector. The vector elements are copied into this new GVector.- Parameters:
vector
- the source GVector for this new GVector.
-
GVector
public GVector(int length) Constructs a new GVector of the specified length with all vector elements initialized to 0.- Parameters:
length
- the number of elements in this GVector.
-
GVector
Constructs a new GVector and copies the initial values from the specified tuple.- Parameters:
v
- the source for the new GVector's initial values
-
GVector
Constructs a new GVector and copies the initial values from the specified tuple.- Parameters:
v
- the source for the new GVector's initial values
-
GVector
Constructs a new GVector and copies the initial values from the specified tuple.- Parameters:
v
- the source for the new GVector's initial values
-
-
Method Details
-
add
Creates the vector sum of this vector and the given one (must be equal sized). Returns result as new vector.- Parameters:
v
-- Returns:
- new vector
-
addSelf
Sets the value of this vector to sum of itself and the specified vector- Parameters:
vector
- the second vector- Returns:
- itself
-
angleBetween
Returns the (n-space) angle in radians between this vector and the vector parameter; the return value is constrained to the range [0,PI].- Parameters:
v
- The other vector- Returns:
- The angle in radians in the range [0,PI]
-
backSolveLUD
LU Decomposition Back Solve; this method takes the LU matrix and the permutation vector produced by the GMatrix method LUD and solves the equation (LU)*x = b by placing the solution vector x into this vector. This vector should be the same length or longer than b.- Parameters:
LU
- The matrix into which the lower and upper decompostions have been placedb
- The b vector in the equation (LU)*x = bpermutation
- The row permuations that were necessary to produce the LU matrix parameter
-
backSolveSVD
Solves for x in Ax = b, where x is this vector (nx1), A is mxn, b is mx1, and A = U*W*transpose(V); U,W,V must be precomputed and can be found by taking the singular value decomposition (SVD) of A using the method SVD found in the GMatrix class.- Parameters:
U
- The U matrix produced by the GMatrix method SVDW
- The W matrix produced by the GMatrix method SVDV
- The V matrix produced by the GMatrix method SVDb
- The b vector in the linear equation Ax = b
-
clone
Creates a new object of the same class as this object.- Returns:
- a clone of this instance.
- Throws:
OutOfMemoryError
- if there is not enough memory.- Since:
- vecmath 1.3
- See Also:
-
dot
Returns the dot product of this vector and vector v.- Parameters:
v
- the other vector- Returns:
- the dot product of this and v
-
equals
Returns true if all of the data members of GVector vector1 are equal to the corresponding data members in this GVector.- Parameters:
vector1
- The vector with which the comparison is made.- Returns:
- true or false
-
equals
Returns true if the Object o1 is of type GMatrix and all of the data members of o1 are equal to the corresponding data members in this GMatrix. -
equalsWithTolerance
Returns true if the L-infinite distance between this vector and vector v is less than or equal to the tolerance parameter, otherwise returns false. The L-infinite distance is equal to MAX[abs(x1-x2), abs(y1-y2), . . . ].- Parameters:
v
- The vector to be compared to this vectortolerance
- the threshold value
-
get
public final double get(int index) Retrieves the value at the specified index value of this vector.- Parameters:
index
- the index of the element to retrieve (zero indexed)- Returns:
- the value at the indexed element
-
hashCode
public int hashCode()Returns a hash code value based on the data values in this object. Two different GVector objects with identical data values (i.e., GVector.equals returns true) will return the same hash number. Two GVector objects with different data members may return the same hash value, although this is not likely. -
interpolateTo
Linearly interpolates this vector to the target vector and places the result into a new instance: result = this + (target-this)*alpha. The target vector needs to be equal sized.- Parameters:
v
- the target vectoralpha
- the alpha interpolation parameter- Returns:
- result as new vector
-
interpolateTo
Interpolates the vector towards the given target vector, using the givenInterpolateStrategy
. The target vector needs to be equal sized.- Parameters:
v
- target vectoralpha
- interpolation factor (should be in the range 0..1)strategy
- InterpolateStrategy instance- Returns:
- result as new vector
-
interpolateToSelf
Linearly interpolates this vector to the target vector and places result in this vector. result = this + (target-this)*alpha. The target vector needs to be equal sized.- Parameters:
v
- the target vectoralpha
- the alpha interpolation parameter
-
interpolateToSelf
Interpolates the vector towards the given target vector, using the givenInterpolateStrategy
. The target vector needs to be equal sized.- Parameters:
v
- target vectoralpha
- interpolation factor (should be in the range 0..1)strategy
- InterpolateStrategy instance- Returns:
- itself, result overrides current vector
-
invert
public final void invert()Negates the value of this vector: this = -this. -
magnitude
public final double magnitude()Returns the square root of the sum of the squares of this vector (its length in n-dimensional space).- Returns:
- length of this vector
-
magSquared
public final double magSquared()Returns the sum of the squares of this vector (its length squared in n-dimensional space).- Returns:
- length squared of this vector
-
mul
Multiplies matrix m1 times Vector v1 and places the result into this vector (this = m1*v1).- Parameters:
m1
- The matrix in the multiplicationv1
- The vector that is multiplied
-
mul
Multiplies the transpose of vector v1 (ie, v1 becomes a row vector with respect to the multiplication) times matrix m1 and places the result into this vector (this = transpose(v1)*m1). The result is technically a row vector, but the GVector class only knows about column vectors, and so the result is stored as a column vector.- Parameters:
m1
- The matrix in the multiplicationv1
- The vector that is temporarily transposed
-
normalize
public final void normalize()Normalizes this vector in place. -
scale
Scales this vector by the scale factor s and returns result as new vector.- Parameters:
s
- the scalar value- Returns:
- new vector
-
scale
Scales the values of this vector with the values of the given vector vector (this = this * vector). Returns result as new vector.- Parameters:
v
- scale vector- Returns:
- new vector
-
scaleSelf
Scales this vector by the scale factor s.- Parameters:
s
- the scalar value- Returns:
- itself
-
scaleSelf
Scales the values of this vector with the values of the given vector vector (this = this * vector).- Parameters:
v
- scale vector- Returns:
- itself
-
set
Sets the values of this vector to the values found in the array parameter. If the array is shorter than the number of values in this vector the remaining values are zeroed. If the array is longer, only the first values up to to the vector length are copied.- Parameters:
vector
- the source array
-
set
Sets the value of this vector to the values found in vector vector.- Parameters:
vector
- the source vector
-
set
Sets the value of this vector to the values in tuple- Parameters:
tuple
- the source for the new GVector's new values
-
set
Sets the value of this vector to the values in tuple- Parameters:
tuple
- the source for the new GVector's new values
-
set
Sets the value of this vector to the values in tuple- Parameters:
tuple
- the source for the new GVector's new values- Returns:
- itself
-
setElement
Modifies the value at the specified index of this vector.- Parameters:
index
- the index if the element to modify (zero indexed)value
- the new vector element value
-
setSize
Changes the size of this vector dynamically. If the size is increased no data values will be lost. If the size is decreased, only those data values whose vector positions were eliminated will be lost.- Parameters:
length
- number of desired elements in this vector
-
size
public final int size()Returns the number of elements in this vector.- Returns:
- number of elements in this vector
-
sub
Creates the vector difference of this vector and the given one (must be equal sized). Returns result as new vector.- Parameters:
v
-- Returns:
- new vector
-
subSelf
Sets the value of this vector to the vector difference of itself and vector (this = this - vector).- Parameters:
vector
- the other vector
-
toString
Returns a string that contains the values of this GVector. -
zero
Sets all the values in this vector to zero.
-