## vmm.core3D Class Vector3D

```java.lang.Object
vmm.core3D.Vector3D
```

`public class Vector3Dextends java.lang.Object`

A 3D vector with components of type double named x, y, and z.

Field Summary
`static Vector3D` `ORIGIN`
The origin, (0,0,0).
`static Vector3D` `UNIT_X`
The unit vector in the x direction, (1,0,0).
`static Vector3D` `UNIT_Y`
The unit vector in the y direction, (0,1,0).
`static Vector3D` `UNIT_Z`
The uint vector in the z direction, (0,0,1).
` double` `x`
The first component of the vector.
` double` `y`
The second component of the vector.
` double` `z`
The third component of the vector.

Constructor Summary
`Vector3D()`
Construct a vector with all three components initially equal to zero.
```Vector3D(double x, double y, double z)```
Construct a vector that initially has coordinates (x,y,z).
`Vector3D(Vector3D v)`
Construct a vector that is initially a copy of a specified vector.

Method Summary
` void` `assign(Vector3D v)`
this.assign(v) assigns to this the value v.
` void` ```assignLinComb(double c, double d, Vector3D v)```
this.assignLinComb(c,d,v) assigns to this the value c*this + d*v.
` void` ```assignLinComb(double c, Vector3D v, double d, Vector3D w)```
this.assignLinComb(c,v,d,w) assigns to this the value c*v + d*w.
` void` `assignMinus(Vector3D v)`
this.assignMinus(v) assigns to this the value this (- v).
` void` ```assignMinus(Vector3D v, Vector3D w)```
this.assignMinus(v, w) assigns to this the value this (v - w).
` void` ```assignPlus_SumTimes(Vector3D u, Vector3D v, Vector3D w, Vector3D ww, double d)```
this.assignPlus_SumTimes(u, v, w, ww, d) assigns to this the value: this + (u + v + w + ww)*d.
` void` `assignPlus(Vector3D v)`
this.assignPlus(v) assigns to this the value this + v.
` void` ```assignSum(Vector3D v, Vector3D w)```
this.assignSum(v,w) assigns to this the value v + w.
` void` ```assignSumTimes(Vector3D v, Vector3D w, double d)```
this.assignSumTimes(v, w, d) assigns to this the value (v + w)*d.
` void` ```assignSumTimes(Vector3D v, Vector3D w, Vector3D vv, Vector3D ww, double d)```
this.assignSumTimes(v, w, vv, ww, d) assigns to this the value (v + w + vv + ww)*d.
` void` `assignTimes(double d)`
this.assignTimes(d) assigns to this the value d*this.
` void` ```assignTimes(double d, Vector3D v)```
this.assignTimes(d, v) assigns to this the value d*v.
` Vector3D` `cross(Vector3D v)`
Returns the cross product of this vector and v.
` double` `dot(Vector3D v)`
Returns the dot product of this vector and v.
` boolean` `equals(java.lang.Object obj)`
Returns true `obj` is a non-null object whose class in Vector3D and such that the three corrdinates of the vector `obj` are the same as the coordinates of this vector.
`static Vector3D` `fromString(java.lang.String str)`
Attempts to convert a string into a value of type Vector3D.
` Vector3D` ```linComb(double c, double d, Vector3D v)```
Returns the linear combination c*this + d*v.
` Vector3D` `minus(Vector3D v)`
Returns the vector difference of this vector and v.
` void` `negate()`
Multiplies each component of this vector by -1.
` Vector3D` `negated()`
Returns a new vector that is equal to -1 times this vector.
` double` `norm()`
Returns the length of this vector, computed as `Math.sqrt(x*x+y*y+z*z)`
` double` `norm2()`
Returns the length^2 of this vector, computed as `(x*x+y*y+z*z)`
` void` `normalize()`
Divides each component of the vector by the norm of the vector, giving a vector that has length 1.
` Vector3D` `normalized()`
Returns a new vector that is equal to this vector normalized.
` Vector3D` `plus(Vector3D v)`
Returns the vector sum of this vector and v.
` Vector3D` `reflectInAxis(Vector3D axis)`
Rotates this around the unit vector axis by 180 degrees: this to -this + 2*axis.
` Vector3D` `times(double d)`
Returns the scalar product of this vector times d.
` java.lang.String` `toString()`
Returns a string representation of this vector of the form "(x,y,z)" where x, y, and z are the numerical components of the vector.

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### x

`public double x`
The first component of the vector.

### y

`public double y`
The second component of the vector.

### z

`public double z`
The third component of the vector.

### ORIGIN

`public static final Vector3D ORIGIN`
The origin, (0,0,0).

### UNIT_X

`public static final Vector3D UNIT_X`
The unit vector in the x direction, (1,0,0).

### UNIT_Y

`public static final Vector3D UNIT_Y`
The unit vector in the y direction, (0,1,0).

### UNIT_Z

`public static final Vector3D UNIT_Z`
The uint vector in the z direction, (0,0,1).

Constructor Detail

### Vector3D

`public Vector3D()`
Construct a vector with all three components initially equal to zero.

### Vector3D

```public Vector3D(double x,
double y,
double z)```
Construct a vector that initially has coordinates (x,y,z).

### Vector3D

`public Vector3D(Vector3D v)`
Construct a vector that is initially a copy of a specified vector.

Parameters:
`v` - the constructed vector is (v.x, v.y, v.z), or is (0,0,0) if v is null.
Method Detail

### equals

`public boolean equals(java.lang.Object obj)`
Returns true `obj` is a non-null object whose class in Vector3D and such that the three corrdinates of the vector `obj` are the same as the coordinates of this vector.

Overrides:
`equals` in class `java.lang.Object`

### norm

`public double norm()`
Returns the length of this vector, computed as `Math.sqrt(x*x+y*y+z*z)`

### norm2

`public double norm2()`
Returns the length^2 of this vector, computed as `(x*x+y*y+z*z)`

### normalize

`public void normalize()`
Divides each component of the vector by the norm of the vector, giving a vector that has length 1. However, if the vector is zero, or if any of its components are infinite or undefined, then the result of calling this method is to set all the components of the vector to Double.NaN. This method modifies the vector.

`normalized()`

### negate

`public void negate()`
Multiplies each component of this vector by -1. This method modifies the vector.

`negated()`

### normalized

`public Vector3D normalized()`
Returns a new vector that is equal to this vector normalized. This vector is not modified.

`normalize()`

### negated

`public Vector3D negated()`
Returns a new vector that is equal to -1 times this vector. This vector is not modified.

`negate()`

### plus

`public Vector3D plus(Vector3D v)`
Returns the vector sum of this vector and v. A new vector object is constructed to contain the result; neither input vector is modified.

Parameters:
`v` - a non-null vector

### linComb

```public Vector3D linComb(double c,
double d,
Vector3D v)```
Returns the linear combination c*this + d*v. A new vector object contains the result.

### assign

`public void assign(Vector3D v)`
this.assign(v) assigns to this the value v.

### assignPlus

`public void assignPlus(Vector3D v)`
this.assignPlus(v) assigns to this the value this + v.

### assignSum

```public void assignSum(Vector3D v,
Vector3D w)```
this.assignSum(v,w) assigns to this the value v + w.

### assignLinComb

```public void assignLinComb(double c,
double d,
Vector3D v)```
this.assignLinComb(c,d,v) assigns to this the value c*this + d*v.

### assignLinComb

```public void assignLinComb(double c,
Vector3D v,
double d,
Vector3D w)```
this.assignLinComb(c,v,d,w) assigns to this the value c*v + d*w.

### assignPlus_SumTimes

```public void assignPlus_SumTimes(Vector3D u,
Vector3D v,
Vector3D w,
Vector3D ww,
double d)```
this.assignPlus_SumTimes(u, v, w, ww, d) assigns to this the value: this + (u + v + w + ww)*d.

### minus

`public Vector3D minus(Vector3D v)`
Returns the vector difference of this vector and v. A new vector object is constructed to contain the result; neither input vector is modified.

Parameters:
`v` - a non-null vector

### assignMinus

`public void assignMinus(Vector3D v)`
this.assignMinus(v) assigns to this the value this (- v).

### assignMinus

```public void assignMinus(Vector3D v,
Vector3D w)```
this.assignMinus(v, w) assigns to this the value this (v - w).

### times

`public Vector3D times(double d)`
Returns the scalar product of this vector times d. A new vector object is constructed to contain the result; the vector is not modified.

Parameters:
`d` - the scalar that is to be multiplied times this vector

### assignTimes

`public void assignTimes(double d)`
this.assignTimes(d) assigns to this the value d*this.

### assignTimes

```public void assignTimes(double d,
Vector3D v)```
this.assignTimes(d, v) assigns to this the value d*v.

### assignSumTimes

```public void assignSumTimes(Vector3D v,
Vector3D w,
double d)```
this.assignSumTimes(v, w, d) assigns to this the value (v + w)*d.

### assignSumTimes

```public void assignSumTimes(Vector3D v,
Vector3D w,
Vector3D vv,
Vector3D ww,
double d)```
this.assignSumTimes(v, w, vv, ww, d) assigns to this the value (v + w + vv + ww)*d.

### dot

`public double dot(Vector3D v)`
Returns the dot product of this vector and v. A new vector object is constructed to contain the result; neither input vector is modified.

Parameters:
`v` - a non-null vector

### cross

`public Vector3D cross(Vector3D v)`
Returns the cross product of this vector and v. A new vector object is constructed to contain the result; neither input vector is modified.

Parameters:
`v` - a non-null vector

### reflectInAxis

`public Vector3D reflectInAxis(Vector3D axis)`
Rotates this around the unit vector axis by 180 degrees: this to -this + 2*axis. Call as this.reflectInAxis(axis).

### toString

`public java.lang.String toString()`
Returns a string representation of this vector of the form "(x,y,z)" where x, y, and z are the numerical components of the vector. The special strings NaN, INF and -INF are used to represent the values Double.NaN, Double.POSITIVE_INFINITY, and Double.NEGATIVE_INFINITY.

Overrides:
`toString` in class `java.lang.Object`

### fromString

```public static Vector3D fromString(java.lang.String str)
throws java.lang.NumberFormatException```
Attempts to convert a string into a value of type Vector3D. The string should be in the format produced by `toString()`, of the form "(x,y,z)". Will also accept strings that use a space as a separator and are not enclosed in parentheses, of the form "x y z".

Parameters:
`str` - the non-null string that is to be converted
Throws:
`java.lang.NumberFormatException` - if the string is not of the correct format (or is null)