Package org.robwork.sdurw_math
Class EAAf
- java.lang.Object
-
- org.robwork.sdurw_math.Rotation3DVectorf
-
- org.robwork.sdurw_math.EAAf
-
public class EAAf extends Rotation3DVectorf
A class for representing an equivalent angle-axis rotation
This class defines an equivalent-axis-angle orientation vector also known
as an \thetak vector or "axis+angle" vector
The equivalent-axis-angle vector is the product of a unit vector \hat{\mathbf{k}} and an angle of rotation around that axis \theta
Note: given two EAA vectors \theta_1\mathbf{\hat{k}}_1 and \theta_2\mathbf{\hat{k}}_2 it is generally not possible to subtract
or add these vectors, except for the special case when \mathbf{\hat{k}}_1 == \mathbf{\hat{k}}_2 this is why this class does
not have any subtraction or addition operators
-
-
Constructor Summary
Constructors Constructor Description EAAf()Constructs an EAA vector initialized to \{0,0,0\}EAAf(float thetakx, float thetaky, float thetakz)Constructs an initialized EAA vector
\thetak = \left[\begin{array}{c} \theta k_x\\ \theta k_y\\ \theta k_z \end{array}\right]EAAf(long cPtr, boolean cMemoryOwn)EAAf(EAAf eaa)Copy ConstructorEAAf(Rotation3Df R)Extracts Equivalent axis-angle vector from Rotation matrix
EAAf(Vector3Df eaa)Constructs an initialized EAA vector
The angle of the EAA are \|eaa\| and the axis is \frac{eaa}{\|eaa\|}EAAf(Vector3Df axis, float angle)Constructs an initialized EAA vectorEAAf(Vector3Df v1, Vector3Df v2)Constructs an EAA vector that will rotate v1 into
v2.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description EAAfadd(Vector3Df rhs)element wise multiplication.EAAfaddAssign(Vector3Df rhs)addition operatorfloatangle()Extracts the angle of rotation \thetaVector3Dfaxis()Extracts the axis of rotation vector \mathbf{\hat{\mathbf{k}}}EAAfcopy(EAAf rhs)copy operatorEAAfcopy(Rotation3Df rhs)copy operatorEAAfcopy(Vector3Df rhs)assign vector to EAAEAAfcross(EAAf eaa)Calculates the cross product and returns the resultVector3Dfcross(Vector3Df v)Calculates the cross product and returns the resultvoiddelete()floatdot(EAAf eaa)Calculates the cross product and returns the resultfloatdot(Vector3Df v)Calculates the dot product and returns the resultEigenVector3fe()get as eigen vectorEAAfelemAdd(float rhs)Scalar addition.EAAfelemAdd(EAAf rhs)element wise additionEAAfelemDivide(float rhs)scalar devisionEAAfelemDivide(EAAf rhs)element wise devision ( this / rhs )EAAfelemDivide(Vector3Df rhs)element wise devision ( this / rhs )EAAfelemMultiply(float rhs)scalar multiplicationEAAfelemMultiply(EAAf rhs)element wise multiplicationEAAfelemMultiply(Vector3Df rhs)element wise multiplicationEAAfelemSubtract(float rhs)Scalar subtraction.EAAfelemSubtract(EAAf rhs)element wise subtractionbooleanequals(EAAf rhs)Compare with rhs for equality.booleanequals(Vector3Df rhs)Compare with rhs for equality.floatget(long i)static longgetCPtr(EAAf obj)EAAfmultiply(EAAf rhs)This is rotation multiplcation, and it is multiplication of two EAA's first
converted to a Rotation3DEAAfnegate()Unary minus.
negative versionfloatnorm1()Returns the Manhatten norm (1-norm) of the vectorfloatnorm2()Returns the Euclidean norm (2-norm) of the vectorfloatnormInf()Returns the infinte norm ( \inf-norm) of the vectorbooleannotEqual(EAAf rhs)Compare with rhs for inequality.booleannotEqual(Vector3Df rhs)Compare with rhs for inequality.EAAfscaleAngle(float scale)scale the angle, keeping the axis the samevoidset(long i, float d)EAAfsetAngle(float angle)change the angle of the EAAlongsize()Get the size of the EAA.EAAfsubtract(Vector3Df rhs)Vector additionEAAfsubtractAssign(Vector3Df rhs)subtraction operatorRotation3DftoRotation3D()Returns the corresponding 3\times 3 Rotation matrixjava.lang.StringtoString()Vector3DftoVector3D()get the underling Vector-
Methods inherited from class org.robwork.sdurw_math.Rotation3DVectorf
getCPtr
-
-
-
-
Constructor Detail
-
EAAf
public EAAf(long cPtr, boolean cMemoryOwn)
-
EAAf
public EAAf(Rotation3Df R)
Extracts Equivalent axis-angle vector from Rotation matrix
- Parameters:
R- [in] A 3x3 rotation matrix \mathbf{R}
\theta = arccos(\frac{1}{2}(Trace(\mathbf{R})-1)=arccos(\frac{r_{11}+r_{22}+r_{33}-1}{2})
\thetak=log(\mathbf{R})=\frac{\theta}{2 sin \theta}(\mathbf{R}-\mathbf{R}^T) = \frac{\theta}{2 sin \theta} \left[ \begin{array}{c} r_{32}-r_{23}\\ r_{13}-r_{31}\\ r_{21}-r_{12} \end{array} \right]
\thetak= \left[ \begin{array}{c} 0\\ 0\\ 0 \end{array} \right] if \theta = 0
\thetak=\pi \left[ \begin{array}{c} \sqrt{(R(0,0)+1.0)/2.0}\\ \sqrt{(R(1,1)+1.0)/2.0}\\ \sqrt{(R(2,2)+1.0)/2.0} \end{array} \right] if \theta = \pi
-
EAAf
public EAAf()
Constructs an EAA vector initialized to \{0,0,0\}
-
EAAf
public EAAf(Vector3Df axis, float angle)
Constructs an initialized EAA vector- Parameters:
axis- [in] \mathbf{\hat{k}}angle- [in] \theta
-
EAAf
public EAAf(float thetakx, float thetaky, float thetakz)Constructs an initialized EAA vector
\thetak = \left[\begin{array}{c} \theta k_x\\ \theta k_y\\ \theta k_z \end{array}\right]- Parameters:
thetakx- [in] \theta k_xthetaky- [in] \theta k_ythetakz- [in] \theta k_z
-
EAAf
public EAAf(Vector3Df v1, Vector3Df v2)
Constructs an EAA vector that will rotate v1 into
v2. Where v1 and v2 are normalized and described in the same reference frame.- Parameters:
v1- [in] normalized vectorv2- [in] normalized vector
-
EAAf
public EAAf(Vector3Df eaa)
Constructs an initialized EAA vector
The angle of the EAA are \|eaa\| and the axis is \frac{eaa}{\|eaa\|}- Parameters:
eaa- [in] Values to initialize the EAA
-
EAAf
public EAAf(EAAf eaa)
Copy Constructor- Parameters:
eaa- [in] Values to initialize the EAA
-
-
Method Detail
-
getCPtr
public static long getCPtr(EAAf obj)
-
delete
public void delete()
- Overrides:
deletein classRotation3DVectorf
-
size
public long size()
Get the size of the EAA.- Returns:
- the size (always 3).
-
toRotation3D
public Rotation3Df toRotation3D()
Description copied from class:Rotation3DVectorfReturns the corresponding 3\times 3 Rotation matrix- Overrides:
toRotation3Din classRotation3DVectorf- Returns:
- The rotation matrix
-
angle
public float angle()
Extracts the angle of rotation \theta- Returns:
- \theta
-
setAngle
public EAAf setAngle(float angle)
change the angle of the EAA- Parameters:
angle- [in] the new angle- Returns:
- this object
-
axis
public Vector3Df axis()
Extracts the axis of rotation vector \mathbf{\hat{\mathbf{k}}}- Returns:
- \mathbf{\hat{\mathbf{k}}}
-
toVector3D
public Vector3Df toVector3D()
get the underling Vector- Returns:
- the vector
-
e
public EigenVector3f e()
get as eigen vector- Returns:
- Eigenvector
-
get
public float get(long i)
-
set
public void set(long i, float d)
-
negate
public EAAf negate()
Unary minus.
negative version
-
elemAdd
public EAAf elemAdd(EAAf rhs)
element wise addition- Parameters:
rhs- [in] the EAA to be added- Returns:
- the sum of the two EAA's
-
elemSubtract
public EAAf elemSubtract(EAAf rhs)
element wise subtraction- Parameters:
rhs- [in] the EAA to be subtracted- Returns:
- the difference between the two EAA's
-
elemDivide
public EAAf elemDivide(EAAf rhs)
element wise devision ( this / rhs )- Parameters:
rhs- [in] the EAA to be devided with- Returns:
- the result of division
-
elemMultiply
public EAAf elemMultiply(EAAf rhs)
element wise multiplication- Parameters:
rhs- [in] the EAA to be multiplyed with- Returns:
- the result of division
-
multiply
public EAAf multiply(EAAf rhs)
This is rotation multiplcation, and it is multiplication of two EAA's first
converted to a Rotation3D- Parameters:
rhs- [in] the eaa to multiply with- Returns:
- the new rotation
-
elemMultiply
public EAAf elemMultiply(float rhs)
scalar multiplication- Parameters:
rhs- [in] the scalar to multiply with- Returns:
- the product
-
elemDivide
public EAAf elemDivide(float rhs)
scalar devision- Parameters:
rhs- [in] the scalar to devide with- Returns:
- the resulting EAA
-
elemSubtract
public EAAf elemSubtract(float rhs)
Scalar subtraction.
-
elemAdd
public EAAf elemAdd(float rhs)
Scalar addition.
-
scaleAngle
public EAAf scaleAngle(float scale)
scale the angle, keeping the axis the same- Parameters:
scale- [in] how much the angle should change- Returns:
- a new EAA with the scaled angle
-
add
public EAAf add(Vector3Df rhs)
element wise multiplication.- Parameters:
rhs- [in] the vector being devided with- Returns:
- the resulting EAA
-
subtract
public EAAf subtract(Vector3Df rhs)
Vector addition- Parameters:
rhs- [in] the vector being added- Returns:
- the resulting EAA
-
elemDivide
public EAAf elemDivide(Vector3Df rhs)
element wise devision ( this / rhs )- Parameters:
rhs- [in] the Vector to be devided with- Returns:
- the result of division
-
elemMultiply
public EAAf elemMultiply(Vector3Df rhs)
element wise multiplication- Parameters:
rhs- [in] the Vector to be multiplyed with- Returns:
- the result of division
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
cross
public Vector3Df cross(Vector3Df v)
Calculates the cross product and returns the result- Parameters:
v- [in] a Vector3D- Returns:
- the resulting 3D vector
-
cross
public EAAf cross(EAAf eaa)
Calculates the cross product and returns the result- Parameters:
eaa- [in] a EAA- Returns:
- the resulting 3D vector
-
dot
public float dot(Vector3Df v)
Calculates the dot product and returns the result- Parameters:
v- [in] a Vector3D- Returns:
- the resulting scalar
-
dot
public float dot(EAAf eaa)
Calculates the cross product and returns the result- Parameters:
eaa- [in] a EAA- Returns:
- the resulting 3D vector
-
norm2
public float norm2()
Returns the Euclidean norm (2-norm) of the vector- Returns:
- the norm
-
norm1
public float norm1()
Returns the Manhatten norm (1-norm) of the vector- Returns:
- the norm
-
normInf
public float normInf()
Returns the infinte norm ( \inf-norm) of the vector- Returns:
- the norm
-
copy
public EAAf copy(EAAf rhs)
copy operator- Parameters:
rhs- [in] the EAA to be copied- Returns:
- reference to this EAA
-
copy
public EAAf copy(Vector3Df rhs)
assign vector to EAA- Parameters:
rhs- [in] the vector to asign- Returns:
- reference to this EAA
-
addAssign
public EAAf addAssign(Vector3Df rhs)
addition operator- Parameters:
rhs- [in] the right hand side of the operation- Returns:
- reference to this EAA
-
subtractAssign
public EAAf subtractAssign(Vector3Df rhs)
subtraction operator- Parameters:
rhs- [in] the right hand side of the operation- Returns:
- reference to this EAA
-
copy
public EAAf copy(Rotation3Df rhs)
copy operator- Parameters:
rhs- [in] the Rotation3D to be copied- Returns:
- reference to this EAA
-
equals
public boolean equals(Vector3Df rhs)
Compare with rhs for equality.- Parameters:
rhs- [in] other vector.- Returns:
- True if a equals b, false otherwise.
-
notEqual
public boolean notEqual(Vector3Df rhs)
Compare with rhs for inequality.- Parameters:
rhs- [in] other vector.- Returns:
- True if a and b are different, false otherwise.
-
equals
public boolean equals(EAAf rhs)
Compare with rhs for equality.- Parameters:
rhs- [in] other vector.- Returns:
- True if a equals b, false otherwise.
-
notEqual
public boolean notEqual(EAAf rhs)
Compare with rhs for inequality.- Parameters:
rhs- [in] other vector.- Returns:
- True if a and b are different, false otherwise.
-
-