public class PVector
extends Object
implements Serializable
The result of all functions are applied to the vector itself, with the exception of cross(), which returns a new PVector (or writes to a specified 'target' PVector). That is, add() will add the contents of one vector to this one. Using add() with additional parameters allows you to put the result into a new PVector. Functions that act on multiple vectors also include static versions. Because creating new objects can be computationally expensive, most functions include an optional 'target' PVector, so that a new PVector object is not created with each operation.
Initially based on the Vector3D class by Dan Shiffman.
Modifier and Type | Field and Description |
---|---|
float |
x
( begin auto-generated from PVector_x.xml )
The x component of the vector.
|
float |
y
( begin auto-generated from PVector_y.xml )
The y component of the vector.
|
float |
z
( begin auto-generated from PVector_z.xml )
The z component of the vector.
|
Constructor and Description |
---|
PVector()
Constructor for an empty vector: x, y, and z are set to 0.
|
PVector(float x,
float y)
Constructor for a 2D vector: z coordinate is set to 0.
|
PVector(float x,
float y,
float z)
Constructor for a 3D vector.
|
Modifier and Type | Method and Description |
---|---|
PVector |
add(float x,
float y) |
PVector |
add(float x,
float y,
float z) |
PVector |
add(PVector v)
( begin auto-generated from PVector_add.xml )
Adds x, y, and z components to a vector, adds one vector to another, or
adds two independent vectors together.
|
static PVector |
add(PVector v1,
PVector v2)
Add two vectors
|
static PVector |
add(PVector v1,
PVector v2,
PVector target)
Add two vectors into a target vector
|
static float |
angleBetween(PVector v1,
PVector v2)
( begin auto-generated from PVector_angleBetween.xml )
Calculates and returns the angle (in radians) between two vectors.
|
float[] |
array()
( begin auto-generated from PVector_array.xml )
Return a representation of this vector as a float array.
|
PVector |
copy()
( begin auto-generated from PVector_copy.xml )
Gets a copy of the vector, returns a PVector object.
|
PVector |
cross(PVector v)
( begin auto-generated from PVector_cross.xml )
Calculates and returns a vector composed of the cross product between
two vectors.
|
PVector |
cross(PVector v,
PVector target) |
static PVector |
cross(PVector v1,
PVector v2,
PVector target) |
float |
dist(PVector v)
( begin auto-generated from PVector_dist.xml )
Calculates the Euclidean distance between two points (considering a
point as a vector object).
|
static float |
dist(PVector v1,
PVector v2) |
PVector |
div(float n)
( begin auto-generated from PVector_div.xml )
Divides a vector by a scalar or divides one vector by another.
|
static PVector |
div(PVector v,
float n)
Divide a vector by a scalar and return the result in a new vector.
|
static PVector |
div(PVector v,
float n,
PVector target)
Divide a vector by a scalar and store the result in another vector.
|
float |
dot(float x,
float y,
float z) |
float |
dot(PVector v)
( begin auto-generated from PVector_dot.xml )
Calculates the dot product of two vectors.
|
static float |
dot(PVector v1,
PVector v2) |
boolean |
equals(Object obj) |
static PVector |
fromAngle(float angle)
( begin auto-generated from PVector_sub.xml )
Make a new 2D unit vector from an angle.
|
static PVector |
fromAngle(float angle,
PVector target)
Make a new 2D unit vector from an angle
|
PVector |
get()
Deprecated.
|
float[] |
get(float[] target) |
int |
hashCode() |
float |
heading()
( begin auto-generated from PVector_setMag.xml )
Calculate the angle of rotation for this vector (only 2D vectors)
( end auto-generated )
|
float |
heading2D()
Deprecated.
|
PVector |
lerp(float x,
float y,
float z,
float amt)
Linear interpolate the vector to x,y,z values
|
PVector |
lerp(PVector v,
float amt)
( begin auto-generated from PVector_rotate.xml )
Linear interpolate the vector to another vector
( end auto-generated )
|
static PVector |
lerp(PVector v1,
PVector v2,
float amt)
Linear interpolate between two vectors (returns a new PVector object)
|
PVector |
limit(float max)
( begin auto-generated from PVector_limit.xml )
Limit the magnitude of this vector to the value used for the max parameter.
|
float |
mag()
( begin auto-generated from PVector_mag.xml )
Calculates the magnitude (length) of the vector and returns the result
as a float (this is simply the equation sqrt(x*x + y*y + z*z).)
( end auto-generated )
|
float |
magSq()
( begin auto-generated from PVector_mag.xml )
Calculates the squared magnitude of the vector and returns the result
as a float (this is simply the equation (x*x + y*y + z*z).)
Faster if the real length is not required in the
case of comparing vectors, etc.
|
PVector |
mult(float n)
( begin auto-generated from PVector_mult.xml )
Multiplies a vector by a scalar or multiplies one vector by another.
|
static PVector |
mult(PVector v,
float n) |
static PVector |
mult(PVector v,
float n,
PVector target)
Multiply a vector by a scalar, and write the result into a target PVector.
|
PVector |
normalize()
( begin auto-generated from PVector_normalize.xml )
Normalize the vector to length 1 (make it a unit vector).
|
PVector |
normalize(PVector target) |
static PVector |
random2D()
( begin auto-generated from PVector_random2D.xml )
Make a new 2D unit vector with a random direction.
|
static PVector |
random2D(PApplet parent)
Make a new 2D unit vector with a random direction
using Processing's current random number generator
|
static PVector |
random2D(PVector target)
Set a 2D vector to a random unit vector with a random direction
|
static PVector |
random2D(PVector target,
PApplet parent)
Make a new 2D unit vector with a random direction.
|
static PVector |
random3D()
( begin auto-generated from PVector_random3D.xml )
Make a new 3D unit vector with a random direction.
|
static PVector |
random3D(PApplet parent)
Make a new 3D unit vector with a random direction
using Processing's current random number generator
|
static PVector |
random3D(PVector target)
Set a 3D vector to a random unit vector with a random direction
|
static PVector |
random3D(PVector target,
PApplet parent)
Make a new 3D unit vector with a random direction
|
PVector |
rotate(float theta)
( begin auto-generated from PVector_rotate.xml )
Rotate the vector by an angle (only 2D vectors), magnitude remains the same
( end auto-generated )
|
PVector |
set(float[] source)
Set the x, y (and maybe z) coordinates using a float[] array as the source.
|
PVector |
set(float x,
float y) |
PVector |
set(float x,
float y,
float z)
( begin auto-generated from PVector_set.xml )
Sets the x, y, and z component of the vector using two or three separate
variables, the data from a PVector, or the values from a float array.
|
PVector |
set(PVector v) |
PVector |
setMag(float len)
( begin auto-generated from PVector_setMag.xml )
Set the magnitude of this vector to the value used for the len parameter.
|
PVector |
setMag(PVector target,
float len)
Sets the magnitude of this vector, storing the result in another vector.
|
PVector |
sub(float x,
float y) |
PVector |
sub(float x,
float y,
float z) |
PVector |
sub(PVector v)
( begin auto-generated from PVector_sub.xml )
Subtracts x, y, and z components from a vector, subtracts one vector
from another, or subtracts two independent vectors.
|
static PVector |
sub(PVector v1,
PVector v2)
Subtract one vector from another
|
static PVector |
sub(PVector v1,
PVector v2,
PVector target)
Subtract one vector from another and store in another vector
|
String |
toString() |
public float x
public float y
public float z
public PVector()
public PVector(float x, float y, float z)
x
- the x coordinate.y
- the y coordinate.z
- the z coordinate.public PVector(float x, float y)
public PVector set(float x, float y, float z)
x
- the x component of the vectory
- the y component of the vectorz
- the z component of the vectorpublic PVector set(float x, float y)
x
- the x component of the vectory
- the y component of the vectorpublic PVector set(float[] source)
source
- array to copy frompublic static PVector random2D()
random3D()
public static PVector random2D(PApplet parent)
parent
- current PApplet instancepublic static PVector random2D(PVector target)
target
- the target vector (if null, a new vector will be created)public static PVector random2D(PVector target, PApplet parent)
public static PVector random3D()
random2D()
public static PVector random3D(PApplet parent)
parent
- current PApplet instancepublic static PVector random3D(PVector target)
target
- the target vector (if null, a new vector will be created)public static PVector random3D(PVector target, PApplet parent)
public static PVector fromAngle(float angle)
angle
- the angle in radianspublic static PVector fromAngle(float angle, PVector target)
target
- the target vector (if null, a new vector will be created)public PVector copy()
@Deprecated public PVector get()
public float[] get(float[] target)
target
- public float mag()
magSq()
public float magSq()
mag()
public PVector add(PVector v)
v
- the vector to be addedpublic PVector add(float x, float y)
x
- x component of the vectory
- y component of the vectorpublic PVector add(float x, float y, float z)
z
- z component of the vectorpublic static PVector add(PVector v1, PVector v2)
v1
- a vectorv2
- another vectorpublic static PVector add(PVector v1, PVector v2, PVector target)
target
- the target vector (if null, a new vector will be created)public PVector sub(PVector v)
v
- any variable of type PVectorpublic PVector sub(float x, float y)
x
- the x component of the vectory
- the y component of the vectorpublic PVector sub(float x, float y, float z)
z
- the z component of the vectorpublic static PVector sub(PVector v1, PVector v2)
v1
- the x, y, and z components of a PVector objectv2
- the x, y, and z components of a PVector objectpublic static PVector sub(PVector v1, PVector v2, PVector target)
target
- PVector in which to store the resultpublic PVector mult(float n)
n
- the number to multiply with the vectorpublic static PVector mult(PVector v, float n)
v
- the vector to multiply by the scalarpublic static PVector mult(PVector v, float n, PVector target)
target
- PVector in which to store the resultpublic PVector div(float n)
n
- the number by which to divide the vectorpublic static PVector div(PVector v, float n)
v
- the vector to divide by the scalarpublic static PVector div(PVector v, float n, PVector target)
target
- PVector in which to store the resultpublic float dist(PVector v)
v
- the x, y, and z coordinates of a PVectorpublic static float dist(PVector v1, PVector v2)
v1
- any variable of type PVectorv2
- any variable of type PVectorpublic float dot(PVector v)
v
- any variable of type PVectorpublic float dot(float x, float y, float z)
x
- x component of the vectory
- y component of the vectorz
- z component of the vectorpublic static float dot(PVector v1, PVector v2)
v1
- any variable of type PVectorv2
- any variable of type PVectorpublic PVector cross(PVector v)
v
- the vector to calculate the cross productpublic PVector cross(PVector v, PVector target)
v
- any variable of type PVectortarget
- PVector to store the resultpublic static PVector cross(PVector v1, PVector v2, PVector target)
v1
- any variable of type PVectorv2
- any variable of type PVectortarget
- PVector to store the resultpublic PVector normalize()
public PVector normalize(PVector target)
target
- Set to null to create a new vectorpublic PVector limit(float max)
max
- the maximum magnitude for the vectorpublic PVector setMag(float len)
len
- the new length for this vectorpublic PVector setMag(PVector target, float len)
target
- Set to null to create a new vectorlen
- the new length for the new vectorpublic float heading()
@Deprecated public float heading2D()
public PVector rotate(float theta)
theta
- the angle of rotationpublic PVector lerp(PVector v, float amt)
v
- the vector to lerp toamt
- The amount of interpolation; some value between 0.0 (old vector) and 1.0 (new vector). 0.1 is very near the old vector; 0.5 is halfway in between.PApplet.lerp(float, float, float)
public static PVector lerp(PVector v1, PVector v2, float amt)
v1
- the vector to start fromv2
- the vector to lerp topublic PVector lerp(float x, float y, float z, float amt)
x
- the x component to lerp toy
- the y component to lerp toz
- the z component to lerp topublic static float angleBetween(PVector v1, PVector v2)
v1
- the x, y, and z components of a PVectorv2
- the x, y, and z components of a PVectorpublic String toString()
toString
in class Object
public float[] array()
public boolean equals(Object obj)
equals
in class Object
public int hashCode()
hashCode
in class Object