public class Vec4
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static Vec4 |
INFINITY |
static Vec4 |
ONE |
static Vec4 |
UNIT_NEGATIVE_W |
static Vec4 |
UNIT_NEGATIVE_X |
static Vec4 |
UNIT_NEGATIVE_Y |
static Vec4 |
UNIT_NEGATIVE_Z |
static Vec4 |
UNIT_W |
static Vec4 |
UNIT_X |
static Vec4 |
UNIT_Y |
static Vec4 |
UNIT_Z |
double |
w |
double |
x |
double |
y |
double |
z |
static Vec4 |
ZERO |
Constructor and Description |
---|
Vec4(double value) |
Vec4(double x,
double y) |
Vec4(double x,
double y,
double z) |
Vec4(double x,
double y,
double z,
double w) |
Modifier and Type | Method and Description |
---|---|
Vec4 |
add3(double x,
double y,
double z) |
Vec4 |
add3(Vec4 vec4) |
Angle |
angleBetween3(Vec4 vec4) |
static boolean |
areColinear(Vec4 a,
Vec4 b,
Vec4 c)
Indicates whether three vectors are colinear.
|
static Angle |
axisAngle(Vec4 v1,
Vec4 v2,
Vec4[] result)
Compute the angle and rotation axis required to rotate one vector to align with another.
|
static Vec4 |
clamp3(Vec4 vec4,
double min,
double max) |
static Vec4 |
computeAveragePoint(java.lang.Iterable<? extends Vec4> points)
Returns the arithmetic mean of the x, y, z, and w coordinates of the specified points Iterable.
|
static Vec4 |
computeAveragePoint3(BufferWrapper coordinates,
int stride)
Returns the arithmetic mean of the x, y, z coordinates of the specified points buffer.
|
static Vec4[] |
computeExtrema(BufferWrapper buffer) |
static Vec4[] |
computeExtrema(Vec4[] points)
Calculate the extrema of a given array of
Vec4 s. |
Vec4 |
cross3(Vec4 vec4) |
double |
distanceTo2(Vec4 vec4) |
double |
distanceTo3(Vec4 vec4) |
double |
distanceToSquared3(Vec4 vec4) |
Vec4 |
divide3(double value) |
Vec4 |
divide3(Vec4 vec4) |
double |
dot3(Vec4 vec4) |
double |
dot4(Vec4 vec4) |
double |
dotSelf3() |
double |
dotSelf4() |
boolean |
equals(java.lang.Object obj) |
static Vec4 |
fromArray2(double[] array,
int offset)
Constructs a new Vec4 with
x and y values from the specified double array. |
static Vec4 |
fromArray3(double[] array,
int offset)
Constructs a new Vec4 with
x , y and z values from the specified double
array. |
static Vec4 |
fromArray4(double[] array,
int offset)
Constructs a new Vec4 with
x , y , z and w values from the
specified double array. |
static Vec4 |
fromDoubleArray(double[] array,
int offset,
int length)
Constructs a new Vec4 with coordinate values read from the specified double array.
|
static Vec4 |
fromFloatArray(float[] array,
int offset,
int length)
Constructs a new Vec4 with coordinate values read from the specified float array.
|
static Vec4 |
fromLine3(Vec4 origin,
double t,
Vec4 direction) |
Vec4 |
getAbs3() |
static double |
getAverageDistance(java.lang.Iterable<? extends Vec4> points) |
double |
getLength3() |
double |
getLengthSquared3() |
Vec4 |
getNegative3() |
double |
getW() |
double |
getX() |
double |
getY() |
double |
getZ() |
int |
hashCode() |
static Vec4 |
max3(Vec4 value1,
Vec4 value2) |
static Vec4 |
min3(Vec4 value1,
Vec4 value2) |
static Vec4 |
mix3(double amount,
Vec4 value1,
Vec4 value2) |
Vec4 |
multiply3(double value) |
Vec4 |
multiply3(Vec4 vec4) |
Vec4 |
normalize3() |
Vec4 |
perpendicularTo3(Vec4 vec4) |
Vec4[] |
perpendicularVectors()
Computes two vectors mutually perpendicular to this vector and each other.
|
Vec4 |
projectOnto3(Vec4 vec4) |
Vec4 |
subtract3(double x,
double y,
double z) |
Vec4 |
subtract3(Vec4 vec4) |
double[] |
toArray2(double[] array,
int offset)
Writes this Vec4's
x and y values to the specified double array. |
double[] |
toArray3(double[] array,
int offset)
Writes this Vec4's
x , y and z values to the specified double array. |
double[] |
toArray4(double[] array,
int offset)
Writes this Vec4's
x , y , z and w values to the specified
double array. |
double[] |
toDoubleArray(double[] array,
int offset,
int length)
Writes this Vec4's coordinate values to the specified double array.
|
float[] |
toFloatArray(float[] array,
int offset,
int length)
Writes this Vec4's coordinate values to the specified float array.
|
Vec4 |
toHomogeneousDirection3()
Returns a representation of this vector as an
x y z direction suitable for use where
four-dimensional homogeneous coordinates are required. |
Vec4 |
toHomogeneousPoint3()
Returns a representation of this vector as an
x y z point suitable for use where four-dimensional
homogeneous coordinates are required. |
java.lang.String |
toString() |
Vec4 |
transformBy3(Matrix matrix) |
Vec4 |
transformBy3(Quaternion quaternion) |
Vec4 |
transformBy4(Matrix matrix) |
double |
w() |
double |
x() |
double |
y() |
double |
z() |
public static final Vec4 INFINITY
public static final Vec4 ONE
public static final Vec4 UNIT_NEGATIVE_W
public static final Vec4 UNIT_NEGATIVE_X
public static final Vec4 UNIT_NEGATIVE_Y
public static final Vec4 UNIT_NEGATIVE_Z
public static final Vec4 UNIT_W
public static final Vec4 UNIT_X
public static final Vec4 UNIT_Y
public static final Vec4 UNIT_Z
public final double w
public final double x
public final double y
public final double z
public static final Vec4 ZERO
public Vec4(double value)
public Vec4(double x, double y)
public Vec4(double x, double y, double z)
public Vec4(double x, double y, double z, double w)
public final Vec4 add3(double x, double y, double z)
public static boolean areColinear(Vec4 a, Vec4 b, Vec4 c)
a
- the first vector.b
- the second vector.c
- the third vector.java.lang.IllegalArgumentException
- if any argument is null.public static Angle axisAngle(Vec4 v1, Vec4 v2, Vec4[] result)
v1
- The base vector.v2
- The vector to rotate into alignment with v1
.result
- A reference to an array in which to return the computed axis. May not be null.java.lang.IllegalArgumentException
- if any parameter is null.public static Vec4 computeAveragePoint(java.lang.Iterable<? extends Vec4> points)
points
- the Iterable of points which define the returned arithmetic mean.java.lang.IllegalArgumentException
- if the Iterable is null.public static Vec4 computeAveragePoint3(BufferWrapper coordinates, int stride)
The buffer must contain XYZ coordinate tuples which are either tightly packed or offset by the specified stride. The stride specifies the number of buffer elements between the first coordinate of consecutive tuples. For example, a stride of 3 specifies that each tuple is tightly packed as XYZXYZXYZ, whereas a stride of 5 specifies that there are two elements between each tuple as XYZabXYZab (the elements "a" and "b" are ignored). The stride must be at least 3. If the buffer's length is not evenly divisible into stride-sized tuples, this ignores the remaining elements that follow the last complete tuple.
coordinates
- the buffer containing the point coordinates for which to compute a bounding volume.stride
- the number of elements between the first coordinate of consecutive points. If stride is 3,
this interprets the buffer has having tightly packed XYZ coordinate tuples.java.lang.IllegalArgumentException
- if the buffer is null, or if the stride is less than three.public static Vec4[] computeExtrema(BufferWrapper buffer)
public static Vec4[] computeExtrema(Vec4[] points)
Vec4
s. The resulting array is always of length 2, with the
first element containing the minimum extremum, and the second containing the maximum. The minimum extremum is
composed by taking the smallest x, y and z values from all the Vec4
s in the array. These values are
not necessarily taken from the same Vec4
. The maximum extrema is composed in the same fashion.points
- any array of Vec4
sjava.lang.IllegalArgumentException
- if points
is nullpublic final double distanceTo2(Vec4 vec4)
public final double distanceTo3(Vec4 vec4)
public final double distanceToSquared3(Vec4 vec4)
public final Vec4 divide3(double value)
public final double dot3(Vec4 vec4)
public final double dot4(Vec4 vec4)
public final double dotSelf3()
public final double dotSelf4()
public final boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public static Vec4 fromArray2(double[] array, int offset)
x
and y
values from the specified double array. The
specified offset must be 0 or greater, and the array must have capacity equal to or greater than offset +
2
. Coordinates are assigned as follows:
x = array[offset]
y = array[offset + 1]
array
- the double array from which to read coordinate data.offset
- the array starting index.x
and y
coordinate values from the specified double array.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 2
.public static Vec4 fromArray3(double[] array, int offset)
x
, y
and z
values from the specified double
array. The specified offset must be 0 or greater, and the array must have capacity equal to or greater than
offset + 3
. Coordinates are assigned as follows:
x = array[offset]
y = array[offset + 1]
z = array[offset + 2]
array
- the double array from which to read coordinate data.offset
- the array starting index.x
, y
and z
coordinate values from the specified
double array.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 3
.public static Vec4 fromArray4(double[] array, int offset)
x
, y
, z
and w
values from the
specified double array. The specified offset must be 0 or greater, and the array must have capacity equal to or
greater than offset + 4
. Coordinates are assigned as follows:
x = array[offset]
y = array[offset + 1]
z = array[offset + 2]
w = array[offset + 3]
array
- the double array from which to read coordinate data.offset
- the array starting index.x
, y
, z
and w
coordinate values from
the specified double array.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 4
.public static Vec4 fromDoubleArray(double[] array, int offset, int length)
offset + length
. Coordinates are assigned as follows:
x = array[offset]
y = array[offset + 1]
if length > 1
, otherwise y=0
z = array[offset + * 2]
if length > 2
, otherwise z=0
w = array[offset + 3]
if length > 3
, otherwise w=1
array
- the double array from which to read coordinate data.offset
- the array starting index.length
- the number of coordinates to read.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, if length is less than 1, or if the
array's capacity is less than offset + length
.public static Vec4 fromFloatArray(float[] array, int offset, int length)
offset + length
. Coordinates are assigned as follows:
x = array[offset]
y = array[offset + 1]
if length > 1
, otherwise y=0
z = array[offset + 2]
if length > 2
, otherwise z=0
w = array[offset + 3]
if length > 3
, otherwise w=1
array
- the float array from which to read coordinate data.offset
- the array starting index.length
- the number of coordinates to read.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, if length is less than 1, or if the
array's capacity is less than offset + length
.public final Vec4 getAbs3()
public static double getAverageDistance(java.lang.Iterable<? extends Vec4> points)
public final double getLength3()
public final double getLengthSquared3()
public final Vec4 getNegative3()
public final double getW()
public final double getX()
public final double getY()
public final double getZ()
public final int hashCode()
hashCode
in class java.lang.Object
public final Vec4 multiply3(double value)
public final Vec4 normalize3()
public Vec4[] perpendicularVectors()
public final Vec4 subtract3(double x, double y, double z)
public final double[] toArray2(double[] array, int offset)
x
and y
values to the specified double array. The specified offset
must be 0 or greater, and the array must have have capacity equal to or greater than offset + 2
.
Coordinates are written to the array as follows:
array[offset] = x
array[offset + 1] = y
array
- the double array to receive the coordinate data.offset
- the array starting index.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 2
.public final double[] toArray3(double[] array, int offset)
x
, y
and z
values to the specified double array. The
specified offset must be 0 or greater, and the array must have have capacity equal to or greater than
offset + 3
. Coordinates are written to the array as follows:
array[offset] = x
array[offset + 1] = y
array[offset + 2] = z
array
- the double array to receive the coordinate data.offset
- the array starting index.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 3
.public final double[] toArray4(double[] array, int offset)
x
, y
, z
and w
values to the specified
double array. The specified offset must be 0 or greater, and the array must have have capacity equal to or
greater than offset + 4
. Coordinates are written to the array as follows:
array[offset] = x
array[offset + 1] = y
array[offset + 2] = z
array[offset + 3] = w
array
- the double array to receive the coordinate data.offset
- the array starting index.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, or if the array's capacity is less
than offset + 4
.public final double[] toDoubleArray(double[] array, int offset, int length)
offset
+ length
. Coordinates are written to the array as follows:
array[offset] = x
array[offset + 1] = y
if length > 1
, otherwise array[offset + 1]
is not written to
array[offset + 2] = z
if length > 2
, otherwise array[offset + 2]
is not written to
array[offset + 3] = w
if length > 3
, otherwise array[offset + 3]
is not written to
array
- the double array to receive the coordinate data.offset
- the array starting index.length
- the number of coordinates to write.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, if length is less than 1, or if the
array's capacity is less than offset + length
.public final float[] toFloatArray(float[] array, int offset, int length)
offset +
length
. Coordinates are written to the array as follows:
array[offset] = x
array[offset + 1] = y
if length > 1
, otherwise array[offset + 1]
is not written to
array[offset + 2] = z
if length > 2
, otherwise array[offset + 2]
is not written to
array[offset + 3] = w
if length > 3
, otherwise array[offset + 3]
is not written to
array
- the float array to receive the coordinate data.offset
- the array starting index.length
- the number of coordinates to write.java.lang.IllegalArgumentException
- if the array is null, if offset is negative, if length is less than 1, or if the
array's capacity is less than offset + length
.public Vec4 toHomogeneousDirection3()
x y z
direction suitable for use where
four-dimensional homogeneous coordinates are required. The returned vector has x y z
coordinates are
equal to this vector's x y z
coordinates, and has w
coordinate equal to 0.0.
A three-dimensional direction in homogeneous coordinates is necessary when transforming that direction by a 4x4 transformation matrix. The returned vector is not affected by the translation component of a 4x4 transformation matrix, and therefore remains invariant under translation.
Vec4
converted to a direction vector in four-dimensional homogeneous coordinates.public Vec4 toHomogeneousPoint3()
x y z
point suitable for use where four-dimensional
homogeneous coordinates are required. The returned vector has x y z
coordinates are equal to this
vector's x y z
coordinates, and has w
coordinate equal to 1.0.
A three-dimensional point in homogeneous coordinates is necessary when transforming that point by a 4x4 transformation matrix, or when calculating the dot product of the point and the equation of a plane. The returned vector is affected by the translation component of a 4x4 transformation matrix.
Vec4
converted to a point vector in four-dimensional homogeneous coordinates.public final java.lang.String toString()
toString
in class java.lang.Object
public final Vec4 transformBy3(Quaternion quaternion)
public final double w()
public final double x()
public final double y()
public final double z()