java.lang.Object
org.spongepowered.math.imaginary.Complexf
- All Implemented Interfaces:
Serializable
,Comparable<Complexf>
,Imaginaryf
@Immutable
public final class Complexf
extends Object
implements Imaginaryf, Comparable<Complexf>, Serializable
Represent a complex number of the form
x + yi
. The x and y components are stored as float
s. This class is immutable.- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionadd
(double x, double y) Adds the double components of another complex to this one.add
(float x, float y) Adds the float components of another complex to this one.Adds another complex to this one.float
angleDeg()
Returns the angle in degrees formed by the direction vector of this complex on the complex plane.float
angleRad()
Returns the angle in radians formed by the direction vector of this complex on the complex plane.int
Returns the conjugate of this complex.Returns a unit vector pointing in the same direction as this complex on the complex plane.div
(double a) Divides the components of this complex by a double scalar.div
(double x, double y) Divides this complex by the double components of another one.div
(float a) Divides the components of this complex by a float scalar.div
(float x, float y) Divides this complex by the float components of another one.Divides this complex by another one.float
dot
(double x, double y) Returns the dot product of this complex with the double components of another one.float
dot
(float x, float y) Returns the dot product of this complex with the float components of another one.float
Returns the dot product of this complex with another one.boolean
static Complexf
from
(float x, float y) Creates a new complex from the float components.static Complexf
fromAngleDeg
(double angle) Creates a new complex from the double angle in degrees.static Complexf
fromAngleDeg
(float angle) Creates a new complex from the float angle in radians.static Complexf
fromAngleRad
(double angle) Creates a new complex from the double angle in radians.static Complexf
fromAngleRad
(float angle) Creates a new complex from the float angle in radians.static Complexf
fromImaginary
(float y) Creates a new complex from the float imaginary components.static Complexf
fromReal
(float x) Creates a new complex from the float real component.static Complexf
fromRotationTo
(Vector2f from, Vector2f to) Creates a new complex from the angle defined from the first to the second vector.static Complexf
fromRotationTo
(Vector3f from, Vector3f to) Creates a new complex from the angle defined from the first to the second vector.int
hashCode()
invert()
Returns the inverse of this complex.float
length()
Returns the length of this complex.float
Returns the square of the length of this complex.mul
(double a) Multiplies the components of this complex by a double scalar.mul
(double x, double y) Multiplies the double components of another complex with this one.mul
(float a) Multiplies the components of this complex by a float scalar.mul
(float x, float y) Multiplies the float components of another complex with this one.Multiplies another complex with this one.Normalizes this complex.rotate
(double x, double y) Rotates the double components of a vector by this complex.rotate
(float x, float y) Rotates the float components of a vector by this complex.Rotates a vector by this complex.sub
(double x, double y) Subtracts the double components of another complex from this one.sub
(float x, float y) Subtracts the float components of another complex from this one.Subtracts another complex from this one.toDouble()
toFloat()
Converts this complex to a quaternion by using (0, 0, 1) as a rotation axis.toQuaternion
(double x, double y, double z) Converts this complex to a quaternion by using the provided double components vector as a rotation axis.toQuaternion
(float x, float y, float z) Converts this complex to a quaternion by using the provided float components vector as a rotation axis.toQuaternion
(Vector3f axis) Converts this complex to a quaternion by using the provided vector as a rotation axis.toString()
float
x()
Gets the x (real) component of this complex.float
y()
Gets the y (imaginary) component of this complex.
-
Field Details
-
ZERO
An immutable identity (0, 0) complex. -
IDENTITY
An immutable identity (1, 0) complex.
-
-
Constructor Details
-
Complexf
public Complexf(double x, double y) Constructs a new complex from the double components.- Parameters:
x
- The x (real) componenty
- The y (imaginary) component
-
Complexf
public Complexf(float x, float y) Constructs a new complex from the float components.- Parameters:
x
- The x (real) componenty
- The y (imaginary) component
-
-
Method Details
-
x
public float x()Gets the x (real) component of this complex.- Returns:
- The x (real) component
-
y
public float y()Gets the y (imaginary) component of this complex.- Returns:
- The y (imaginary) component
-
add
Adds another complex to this one.- Parameters:
c
- The complex to add- Returns:
- A new complex, which is the sum of both
-
add
Adds the double components of another complex to this one.- Parameters:
x
- The x (real) component of the complex to addy
- The y (imaginary) component of the complex to add- Returns:
- A new complex, which is the sum of both
-
add
Adds the float components of another complex to this one.- Parameters:
x
- The x (real) component of the complex to addy
- The y (imaginary) component of the complex to add- Returns:
- A new complex, which is the sum of both
-
sub
Subtracts another complex from this one.- Parameters:
c
- The complex to subtract- Returns:
- A new complex, which is the difference of both
-
sub
Subtracts the double components of another complex from this one.- Parameters:
x
- The x (real) component of the complex to subtracty
- The y (imaginary) component of the complex to subtract- Returns:
- A new complex, which is the difference of both
-
sub
Subtracts the float components of another complex from this one.- Parameters:
x
- The x (real) component of the complex to subtracty
- The y (imaginary) component of the complex to subtract- Returns:
- A new complex, which is the difference of both
-
mul
Multiplies the components of this complex by a double scalar.- Parameters:
a
- The multiplication scalar- Returns:
- A new complex, which has each component multiplied by the scalar
-
mul
Multiplies the components of this complex by a float scalar.- Specified by:
mul
in interfaceImaginaryf
- Parameters:
a
- The multiplication scalar- Returns:
- A new complex, which has each component multiplied by the scalar
-
mul
Multiplies another complex with this one.- Parameters:
c
- The complex to multiply with- Returns:
- A new complex, which is the product of both
-
mul
Multiplies the double components of another complex with this one.- Parameters:
x
- The x (real) component of the complex to multiply withy
- The y (imaginary) component of the complex to multiply with- Returns:
- A new complex, which is the product of both
-
mul
Multiplies the float components of another complex with this one.- Parameters:
x
- The x (real) component of the complex to multiply withy
- The y (imaginary) component of the complex to multiply with- Returns:
- A new complex, which is the product of both
-
div
Divides the components of this complex by a double scalar.- Parameters:
a
- The division scalar- Returns:
- A new complex, which has each component divided by the scalar
-
div
Divides the components of this complex by a float scalar.- Specified by:
div
in interfaceImaginaryf
- Parameters:
a
- The division scalar- Returns:
- A new complex, which has each component divided by the scalar
-
div
Divides this complex by another one.- Parameters:
c
- The complex to divide with- Returns:
- The quotient of the two complexes
-
div
Divides this complex by the double components of another one.- Parameters:
x
- The x (real) component of the complex to divide withy
- The y (imaginary) component of the complex to divide with- Returns:
- The quotient of the two complexes
-
div
Divides this complex by the float components of another one.- Parameters:
x
- The x (real) component of the complex to divide withy
- The y (imaginary) component of the complex to divide with- Returns:
- The quotient of the two complexes
-
dot
Returns the dot product of this complex with another one.- Parameters:
c
- The complex to calculate the dot product with- Returns:
- The dot product of the two complexes
-
dot
public float dot(double x, double y) Returns the dot product of this complex with the double components of another one.- Parameters:
x
- The x (real) component of the complex to calculate the dot product withy
- The y (imaginary) component of the complex to calculate the dot product with- Returns:
- The dot product of the two complexes
-
dot
public float dot(float x, float y) Returns the dot product of this complex with the float components of another one.- Parameters:
x
- The x (real) component of the complex to calculate the dot product withy
- The y (imaginary) component of the complex to calculate the dot product with- Returns:
- The dot product of the two complexes
-
rotate
Rotates a vector by this complex.- Parameters:
v
- The vector to rotate- Returns:
- The rotated vector
-
rotate
Rotates the double components of a vector by this complex.- Parameters:
x
- The x component of the vectory
- The y component of the vector- Returns:
- The rotated vector
-
rotate
Rotates the float components of a vector by this complex.- Parameters:
x
- The x component of the vectory
- The y component of the vector- Returns:
- The rotated vector
-
direction
Returns a unit vector pointing in the same direction as this complex on the complex plane.- Returns:
- The vector representing the direction this complex is pointing to
-
angleRad
public float angleRad()Returns the angle in radians formed by the direction vector of this complex on the complex plane.- Returns:
- The angle in radians of the direction vector of this complex
-
angleDeg
public float angleDeg()Returns the angle in degrees formed by the direction vector of this complex on the complex plane.- Returns:
- The angle in degrees of the direction vector of this complex
-
conjugate
Returns the conjugate of this complex.
Conjugation of a complexa
is an operation returning complexa'
such thata' * a = a * a' = |a|2
where|a|2
is squared length ofa
.- Specified by:
conjugate
in interfaceImaginaryf
- Returns:
- A new complex, which is the conjugate of this one
-
invert
Returns the inverse of this complex.
Inversion of a complexa
returns complexa-1 = a' / |a|2
wherea'
isconjugation
ofa
, and|a|2
is squared length ofa
.
For any complexesa, b, c
, such thata * b = c
equationsa-1 * c = b
andc * b-1 = a
are true.- Specified by:
invert
in interfaceImaginaryf
- Returns:
- A new complex, which is the inverse of this one
-
lengthSquared
public float lengthSquared()Returns the square of the length of this complex.- Specified by:
lengthSquared
in interfaceImaginaryf
- Returns:
- The square of the length
-
length
public float length()Returns the length of this complex.- Specified by:
length
in interfaceImaginaryf
- Returns:
- The length
-
normalize
Normalizes this complex.- Specified by:
normalize
in interfaceImaginaryf
- Returns:
- A new complex of unit length
-
toQuaternion
Converts this complex to a quaternion by using (0, 0, 1) as a rotation axis.- Returns:
- A quaternion of this rotation around the unit z
-
toQuaternion
Converts this complex to a quaternion by using the provided vector as a rotation axis.- Parameters:
axis
- The rotation axis- Returns:
- A quaternion of this rotation around the given axis
-
toQuaternion
Converts this complex to a quaternion by using the provided double components vector as a rotation axis.- Parameters:
x
- The x component of the axis vectory
- The y component of the axis vectorz
- The z component of the axis vector- Returns:
- A quaternion of this rotation around the given axis
-
toQuaternion
Converts this complex to a quaternion by using the provided float components vector as a rotation axis.- Parameters:
x
- The x component of the axis vectory
- The y component of the axis vectorz
- The z component of the axis vector- Returns:
- A quaternion of this rotation around the given axis
-
toFloat
- Specified by:
toFloat
in interfaceImaginaryf
-
toDouble
- Specified by:
toDouble
in interfaceImaginaryf
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareTo
in interfaceComparable<Complexf>
-
toString
-
fromReal
Creates a new complex from the float real component.The
ZERO
constant is re-used whenx
is 0.- Parameters:
x
- The x (real) component- Returns:
- The complex created from the float real component
-
fromImaginary
Creates a new complex from the float imaginary components.The
ZERO
constant is re-used wheny
is 0.- Parameters:
y
- The y (imaginary) component- Returns:
- The complex created from the float imaginary component
-
from
Creates a new complex from the float components.The
ZERO
constant is re-used when bothx
andz
are 0.- Parameters:
x
- The x (real) componenty
- The y (imaginary) component- Returns:
- The complex created from the float components
-
fromRotationTo
Creates a new complex from the angle defined from the first to the second vector.- Parameters:
from
- The first vectorto
- The second vector- Returns:
- The complex defined by the angle between the vectors
-
fromRotationTo
Creates a new complex from the angle defined from the first to the second vector.- Parameters:
from
- The first vectorto
- The second vector- Returns:
- The complex defined by the angle between the vectors
-
fromAngleDeg
Creates a new complex from the double angle in degrees.- Parameters:
angle
- The angle in degrees- Returns:
- The complex defined by the angle
-
fromAngleRad
Creates a new complex from the double angle in radians.- Parameters:
angle
- The angle in radians- Returns:
- The complex defined by the angle
-
fromAngleDeg
Creates a new complex from the float angle in radians.- Parameters:
angle
- The angle in radians- Returns:
- The complex defined by the angle
-
fromAngleRad
Creates a new complex from the float angle in radians.- Parameters:
angle
- The angle in radians- Returns:
- The complex defined by the angle
-