|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecttoxi.geom.Vec3D
public class Vec3D
Comprehensive 3D vector class with additional basic intersection and collision detection features.
Nested Class Summary | |
---|---|
static class |
Vec3D.Axis
|
Field Summary | |
---|---|
static Vec3D |
MAX_VALUE
Defines vector with all coords set to Float.MAX_VALUE. |
static Vec3D |
MIN_VALUE
Defines vector with all coords set to Float.MIN_VALUE. |
float |
x
X coordinate. |
static Vec3D |
X_AXIS
Defines positive X axis. |
float |
y
Y coordinate. |
static Vec3D |
Y_AXIS
Defines positive Y axis. |
float |
z
Z coordinate. |
static Vec3D |
Z_AXIS
Defines positive Z axis. |
static Vec3D |
ZERO
Defines the zero vector. |
Constructor Summary | |
---|---|
Vec3D()
Creates a new zero vector. |
|
Vec3D(float x,
float y,
float z)
Creates a new vector with the given coordinates. |
|
Vec3D(Vec3D v)
Creates a new vector with the coordinates of the given vector. |
Method Summary | |
---|---|
Vec3D |
abs()
Abs. |
Vec3D |
add(float a,
float b,
float c)
Adds vector {a,b,c} and returns result as new vector. |
Vec3D |
add(Vec3D v)
Add vector v and returns result as new vector. |
Vec3D |
addSelf(float a,
float b,
float c)
Adds vector {a,b,c} and overrides coordinates with result. |
Vec3D |
addSelf(Vec3D v)
Adds vector v and overrides coordinates with result. |
float |
angleBetween(Vec3D v)
Computes the angle between this vector and vector V. |
float |
angleBetween(Vec3D v,
boolean forceNormalize)
Computes the angle between this vector and vector V. |
Vec3D |
clear()
Sets all vector components to 0. |
Vec3D |
closestPointOnLine(Vec3D a,
Vec3D b)
Computes the closest point on the given line segments. |
int |
compareTo(Vec3D v)
Compares the length of the vector with another one. |
Vec3D |
constrain(AABB box)
Forcefully fits the vector in the given AABB. |
Vec3D |
constrain(Vec3D min,
Vec3D max)
Forcefully fits the vector in the given AABB specified by the 2 given points. |
Vec3D |
copy()
Copy. |
Vec3D |
cross(Vec3D v)
Calculates cross-product with vector v. |
Vec3D |
crossInto(Vec3D v,
Vec3D result)
Calculates cross-product with vector v. |
Vec3D |
crossSelf(Vec3D v)
Calculates cross-product with vector v. |
float |
distanceTo(Vec3D v)
Calculates distance to another vector. |
float |
distanceToSquared(Vec3D v)
Calculates the squared distance to another vector. |
float |
dot(Vec3D v)
Computes the scalar product (dot product) with the given vector. |
boolean |
equals(java.lang.Object obj)
|
boolean |
equalsWithTolerance(Vec3D v,
float tolerance)
Compares this vector with the one given. |
Vec3D |
floor()
Replaces the vector components with integer values of their current values. |
Vec3D |
frac()
Replaces the vector components with the fractional part of their current values. |
static Vec3D |
fromXYTheta(float theta)
Creates a new vector from the given angle in the XY plane. |
static Vec3D |
fromXZTheta(float theta)
Creates a new vector from the given angle in the XZ plane. |
static Vec3D |
fromYZTheta(float theta)
Creates a new vector from the given angle in the YZ plane. |
Vec3D |
getAbs()
Gets the abs. |
float |
getComponent(Vec3D.Axis id)
|
Vec3D |
getConstrained(AABB box)
Creates a copy of the vector which forcefully fits in the given AABB. |
Vec3D |
getFloored()
Creates a new vector whose components are the integer value of their current values. |
Vec3D |
getFrac()
Creates a new vector whose components are the fractional part of their current values. |
Vec3D |
getInverted()
Scales vector uniformly by factor -1 ( v = -v ). |
Vec3D |
getLimited(float lim)
Creates a copy of the vector with its magnitude limited to the length given. |
Vec3D |
getNormalized()
Produces the normalized version as a new vector. |
Vec3D |
getNormalizedTo(float len)
Produces a new vector normalized to the given length. |
Vec3D |
getReciprocal()
Returns a multiplicative inverse copy of the vector. |
Vec3D |
getRotatedAroundAxis(Vec3D axis,
float theta)
Gets the rotated around axis. |
Vec3D |
getRotatedX(float theta)
Creates a new vector rotated by the given angle around the X axis. |
Vec3D |
getRotatedY(float theta)
Creates a new vector rotated by the given angle around the Y axis. |
Vec3D |
getRotatedZ(float theta)
Creates a new vector rotated by the given angle around the Z axis. |
Vec3D |
getSignum()
Creates a new vector in which all components are replaced with the signum of their original values. |
int |
hashCode()
Returns a unique code for this vector object based on it's values. |
float |
headingXY()
Computes the vector's direction in the XY plane (for example for 2D points). |
float |
headingXZ()
Computes the vector's direction in the XZ plane. |
float |
headingYZ()
Computes the vector's direction in the YZ plane. |
Vec3D |
interpolateTo(Vec3D v,
float f)
Interpolates the vector towards the given target vector, using linear interpolation. |
Vec3D |
interpolateTo(Vec3D v,
float f,
InterpolateStrategy s)
Interpolates the vector towards the given target vector, using the given InterpolateStrategy . |
Vec3D |
interpolateToSelf(Vec3D v,
float f)
Interpolates the vector towards the given target vector, using linear interpolation. |
Vec3D |
interpolateToSelf(Vec3D v,
float f,
InterpolateStrategy s)
Interpolates the vector towards the given target vector, using the given InterpolateStrategy . |
Vec3D |
invert()
Scales vector uniformly by factor -1 ( v = -v ), overrides coordinates with result. |
boolean |
isInAABB(AABB box)
Checks if the point is inside the given AABB. |
boolean |
isInAABB(Vec3D boxOrigin,
Vec3D boxExtent)
Checks if the point is inside the given axis-aligned bounding box. |
boolean |
isZeroVector()
Checks if vector has a magnitude equals or close to zero. |
Vec3D |
jitter(float j)
Jitter. |
Vec3D |
jitter(float jx,
float jy,
float jz)
Adds random jitter to the vector. |
Vec3D |
jitter(Vec3D jitterVec)
Jitter. |
Vec3D |
limit(float lim)
Limits the vector's magnitude to the length given. |
float |
magnitude()
Calculates the magnitude/eucledian length of the vector. |
float |
magSquared()
Calculates only the squared magnitude/length of the vector. |
static Vec3D |
max(Vec3D a,
Vec3D b)
Constructs a new vector consisting of the largest components of both vectors. |
Vec3D |
maxSelf(Vec3D b)
Max self. |
static Vec3D |
min(Vec3D a,
Vec3D b)
Constructs a new vector consisting of the smallest components of both vectors. |
Vec3D |
minSelf(Vec3D b)
Min self. |
Vec3D |
modSelf(float base)
Applies a uniform modulo operation to the vector, using the same base for all components. |
Vec3D |
modSelf(float bx,
float by,
float bz)
Calculates modulo operation for each vector component separately. |
Vec3D |
normalize()
Normalizes the vector so that its magnitude = 1. |
Vec3D |
normalizeTo(float len)
Normalizes the vector to the given length. |
static Vec3D |
randomVector()
Static factory method. |
static Vec3D |
randomVector(java.util.Random rnd)
Static factory method. |
Vec3D |
reciprocal()
Replaces the vector components with their multiplicative inverse. |
Vec3D |
rotateAroundAxis(Vec3D axis,
float theta)
Rotates the vector around the giving axis. |
Vec3D |
rotateX(float theta)
Rotates the vector by the given angle around the X axis. |
Vec3D |
rotateY(float theta)
Rotates the vector by the given angle around the Y axis. |
Vec3D |
rotateZ(float theta)
Rotates the vector by the given angle around the Z axis. |
Vec3D |
scale(float s)
Scales vector uniformly and returns result as new vector. |
Vec3D |
scale(float a,
float b,
float c)
Scales vector non-uniformly and returns result as new vector. |
Vec3D |
scale(Vec3D s)
Scales vector non-uniformly by vector v and returns result as new vector. |
Vec3D |
scaleSelf(float s)
Scales vector uniformly and overrides coordinates with result. |
Vec3D |
scaleSelf(float a,
float b,
float c)
Scales vector non-uniformly by vector {a,b,c} and overrides coordinates with result. |
Vec3D |
scaleSelf(Vec3D s)
Scales vector non-uniformly by vector v and overrides coordinates with result. |
Vec3D |
set(float x,
float y,
float z)
Overrides coordinates with the given values. |
Vec3D |
set(Vec3D v)
Overrides coordinates with the ones of the given vector. |
Vec3D |
setComponent(Vec3D.Axis id,
float val)
|
Vec3D |
setXY(Vec2D v)
Overrides XY coordinates with the ones of the given 2D vector. |
Vec3D |
signum()
Replaces all vector components with the signum of their original values. |
Vec3D |
sub(float a,
float b,
float c)
Subtracts vector {a,b,c} and returns result as new vector. |
Vec3D |
sub(Vec3D v)
Subtracts vector v and returns result as new vector. |
Vec3D |
subSelf(float a,
float b,
float c)
Subtracts vector {a,b,c} and overrides coordinates with result. |
Vec3D |
subSelf(Vec3D v)
Subtracts vector v and overrides coordinates with result. |
Vec2D |
to2DXY()
Creates a new 2D vector of the XY components. |
Vec2D |
to2DXZ()
Creates a new 2D vector of the XZ components. |
Vec2D |
to2DYZ()
Creates a new 2D vector of the YZ components. |
float[] |
toArray()
|
Vec3D |
toCartesian()
Converts the spherical vector back into cartesian coordinates. |
Vec3D |
toSpherical()
Converts the vector into spherical coordinates. |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final Vec3D X_AXIS
public static final Vec3D Y_AXIS
public static final Vec3D Z_AXIS
public static final Vec3D ZERO
public static final Vec3D MIN_VALUE
public static final Vec3D MAX_VALUE
public float x
public float y
public float z
Constructor Detail |
---|
public Vec3D()
public Vec3D(float x, float y, float z)
x
- the xy
- the yz
- the zpublic Vec3D(Vec3D v)
v
- vector to be copiedMethod Detail |
---|
public static final Vec3D fromXYTheta(float theta)
theta
- the theta
public static final Vec3D fromXZTheta(float theta)
theta
- the theta
public static final Vec3D fromYZTheta(float theta)
theta
- the theta
public static final Vec3D max(Vec3D a, Vec3D b)
b
- the ba
- the a
public static final Vec3D min(Vec3D a, Vec3D b)
b
- comparing vectora
- the a
public static final Vec3D randomVector()
public static final Vec3D randomVector(java.util.Random rnd)
rnd
- the rnd
public final Vec3D abs()
public final Vec3D add(float a, float b, float c)
a
- X coordinateb
- Y coordinatec
- Z coordinate
public final Vec3D add(Vec3D v)
v
- vector to add
public final Vec3D addSelf(float a, float b, float c)
a
- X coordinateb
- Y coordinatec
- Z coordinate
public final Vec3D addSelf(Vec3D v)
v
- vector to add
public final float angleBetween(Vec3D v)
angleBetween(Vec3D, boolean)
v
- vector
public final float angleBetween(Vec3D v, boolean forceNormalize)
v
- vectorforceNormalize
- true, if normalized versions of the vectors are to be used
(Note: only copies will be used, original vectors will not be
altered by this method)
public final Vec3D clear()
public Vec3D closestPointOnLine(Vec3D a, Vec3D b)
Triangle.getClosestVertexTo(Vec3D)
a
- start point of line segmentb
- end point of line segment
public int compareTo(Vec3D v)
compareTo
in interface java.lang.Comparable<Vec3D>
v
- vector to compare with
public final Vec3D constrain(AABB box)
box
- the box
public final Vec3D constrain(Vec3D min, Vec3D max)
min
- max
-
public Vec3D copy()
public final Vec3D cross(Vec3D v)
v
- vector to cross
public final Vec3D crossInto(Vec3D v, Vec3D result)
v
- vector to crossresult
- result vector
public final Vec3D crossSelf(Vec3D v)
v
- the v
public final float distanceTo(Vec3D v)
v
- non-null vector
public final float distanceToSquared(Vec3D v)
v
- non-null vector
magSquared()
public final float dot(Vec3D v)
v
- the v
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public boolean equalsWithTolerance(Vec3D v, float tolerance)
v
- the vtolerance
- the tolerance
public final Vec3D floor()
public final Vec3D frac()
public final Vec3D getAbs()
public float getComponent(Vec3D.Axis id)
public final Vec3D getConstrained(AABB box)
box
- the box
public final Vec3D getFloored()
public final Vec3D getFrac()
public final Vec3D getInverted()
public final Vec3D getLimited(float lim)
lim
- new maximum magnitude
public Vec3D getNormalized()
public Vec3D getNormalizedTo(float len)
len
- new desired length
public final Vec3D getReciprocal()
public final Vec3D getRotatedAroundAxis(Vec3D axis, float theta)
axis
- the axistheta
- the theta
rotateAroundAxis(Vec3D, float)
public final Vec3D getRotatedX(float theta)
theta
- the theta
public final Vec3D getRotatedY(float theta)
theta
- the theta
public final Vec3D getRotatedZ(float theta)
theta
- the theta
public final Vec3D getSignum()
public int hashCode()
hashCode
in class java.lang.Object
public final float headingXY()
public final float headingXZ()
public final float headingYZ()
public final Vec3D interpolateTo(Vec3D v, float f)
v
- target vectorf
- interpolation factor (should be in the range 0..1)
public Vec3D interpolateTo(Vec3D v, float f, InterpolateStrategy s)
InterpolateStrategy
.
v
- target vectorf
- interpolation factor (should be in the range 0..1)s
- InterpolateStrategy instance
public final Vec3D interpolateToSelf(Vec3D v, float f)
v
- target vectorf
- interpolation factor (should be in the range 0..1)
public Vec3D interpolateToSelf(Vec3D v, float f, InterpolateStrategy s)
InterpolateStrategy
.
v
- target vectorf
- interpolation factor (should be in the range 0..1)s
- InterpolateStrategy instance
public final Vec3D invert()
public boolean isInAABB(AABB box)
box
- bounding box to check
public boolean isInAABB(Vec3D boxOrigin, Vec3D boxExtent)
boxOrigin
- bounding box origin/centerboxExtent
- bounding box extends (half measure)
public final boolean isZeroVector()
public final Vec3D jitter(float j)
j
- the j
public final Vec3D jitter(float jx, float jy, float jz)
jx
- maximum x jitterjy
- maximum y jitterjz
- maximum z jitter
public final Vec3D jitter(Vec3D jitterVec)
jitterVec
- the jitter vec
public final Vec3D limit(float lim)
lim
- new maximum magnitude
public float magnitude()
public float magSquared()
public final Vec3D maxSelf(Vec3D b)
b
- the b
public final Vec3D minSelf(Vec3D b)
b
- the b
public final Vec3D modSelf(float base)
base
- the base
public final Vec3D modSelf(float bx, float by, float bz)
bx
- the bxby
- the bybz
- the bz
public Vec3D normalize()
public Vec3D normalizeTo(float len)
len
- desired length
public final Vec3D reciprocal()
public final Vec3D rotateAroundAxis(Vec3D axis, float theta)
axis
- rotation axis vectortheta
- rotation angle (in radians)
public final Vec3D rotateX(float theta)
theta
- the theta
public final Vec3D rotateY(float theta)
theta
- the theta
public final Vec3D rotateZ(float theta)
theta
- the theta
public Vec3D scale(float s)
s
- scale factor
public Vec3D scale(float a, float b, float c)
a
- scale factor for X coordinateb
- scale factor for Y coordinatec
- scale factor for Z coordinate
public Vec3D scale(Vec3D s)
s
- scale vector
public Vec3D scaleSelf(float s)
s
- scale factor
public Vec3D scaleSelf(float a, float b, float c)
a
- scale factor for X coordinateb
- scale factor for Y coordinatec
- scale factor for Z coordinate
public Vec3D scaleSelf(Vec3D s)
s
- scale vector
public Vec3D set(float x, float y, float z)
x
- the xy
- the yz
- the z
public Vec3D set(Vec3D v)
v
- vector to be copied
public Vec3D setComponent(Vec3D.Axis id, float val)
public Vec3D setXY(Vec2D v)
v
- 2D vector
public Vec3D signum()
public final Vec3D sub(float a, float b, float c)
a
- X coordinateb
- Y coordinatec
- Z coordinate
public final Vec3D sub(Vec3D v)
v
- vector to be subtracted
public final Vec3D subSelf(float a, float b, float c)
a
- X coordinateb
- Y coordinatec
- Z coordinate
public final Vec3D subSelf(Vec3D v)
v
- vector to be subtracted
public final Vec2D to2DXY()
public final Vec2D to2DXZ()
public final Vec2D to2DYZ()
public float[] toArray()
public Vec3D toCartesian()
public Vec3D toSpherical()
public java.lang.String toString()
toString
in class java.lang.Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |