Class GeometryMath_F64

java.lang.Object
georegression.geometry.GeometryMath_F64

public class GeometryMath_F64 extends Object
Math operations that can be applied to geometric primitives.
  • Constructor Details

    • GeometryMath_F64

      public GeometryMath_F64()
  • Method Details

    • crossMatrix

      public static org.ejml.data.DMatrixRMaj crossMatrix(double x0, double x1, double x2, @Nullable @Nullable org.ejml.data.DMatrixRMaj ret)
      Creates a skew symmetric cross product matrix from the provided tuple.
      Parameters:
      x0 - Element 0.
      x1 - Element 1.
      x2 - Element 2.
      ret - If not null the results are stored here, otherwise a new matrix is created.
      Returns:
      Skew symmetric cross product matrix.
    • crossMatrix

      public static org.ejml.data.DMatrixRMaj crossMatrix(GeoTuple3D_F64 v, @Nullable @Nullable org.ejml.data.DMatrixRMaj ret)
      Creates a skew symmetric cross product matrix from the provided tuple.
      Parameters:
      v - Tuple. Not modified.
      ret - If not null the results are stored here, otherwise a new matrix is created.
      Returns:
      Skew symmetric cross product matrix.
    • cross

      public static void cross(GeoTuple3D_F64 a, GeoTuple3D_F64 b, GeoTuple3D_F64 c)

      Computes the cross product:

      c = a x b

      Parameters:
      a - Not modified.
      b - Not modified.
      c - Modified.
    • cross

      public static void cross(double a_x, double a_y, double a_z, double b_x, double b_y, double b_z, GeoTuple3D_F64 c)

      Computes the cross product:

      c = a x b

      Parameters:
      a_x - x-coordinate of a
      a_y - y-coordinate of a
      a_z - z-coordinate of a
      b_x - x-coordinate of b
      b_y - y-coordinate of b
      b_z - z-coordinate of b
      c - Modified.
    • cross

      public static void cross(GeoTuple2D_F64 a, GeoTuple3D_F64 b, GeoTuple3D_F64 c)

      Computes the cross product:

      c = a x b
      where 'a' is in homogeneous coordinates.

      Parameters:
      a - Homogeneous coordinates, z = 1 assumed. Not modified.
      b - Not modified.
      c - Modified.
    • cross

      public static void cross(GeoTuple2D_F64 a, GeoTuple2D_F64 b, GeoTuple3D_F64 c)

      Computes the cross product:

      c = a x b

      Parameters:
      a - Homogeneous coordinates, z = 1 assumed. Not modified.
      b - Homogeneous coordinates, z = 1 assumed. Not modified.
      c - Modified.
    • add

      public static void add(GeoTuple3D_F64 a, GeoTuple3D_F64 b, GeoTuple3D_F64 c)

      Adds two points together.

      c = a + b

      Point 'c' can be the same instance as 'a' or 'b'.

      Parameters:
      a - A point. Not modified.
      b - A point. Not modified.
      c - Where the results are stored. Modified.
    • add

      public static void add(double a0, GeoTuple3D_F64 pt0, double a1, GeoTuple3D_F64 pt1, GeoTuple3D_F64 pt2)

      Adds two points together while scaling them.

      pt2 = a0 pt0 + a1 pt1

      Point 'c' can be the same instance as 'a' or 'b'.

      Parameters:
      a0 - Scaling factor for pt0.
      pt0 - A point. Not modified.
      a1 - Scaling factor for pt1.
      pt1 - A point. Not modified.
      pt2 - Where the results are stored. Modified.
    • addMult

      public static <T extends GeoTuple3D_F64> T addMult(T p0, org.ejml.data.DMatrixRMaj M, T p1, @Nullable T result)

      ret = p0 + M*p1

      Safe to pass in the same instance of a point more than once.
    • addMultTrans

      public static <T extends GeoTuple3D_F64> T addMultTrans(T p0, org.ejml.data.DMatrixRMaj M, T p1, @Nullable T result)

      ret = p0 + MT*p1

      Safe to pass in the same instance of a point more than once.
    • sub

      public static void sub(GeoTuple3D_F64 a, GeoTuple3D_F64 b, GeoTuple3D_F64 c)

      Substracts two points from each other.

      c = a - b

      Point 'c' can be the same instance as 'a' or 'b'.

      Parameters:
      a - A point. Not modified.
      b - A point. Not modified.
      c - Where the results are stored. Modified.
    • rotate

      public static void rotate(double theta, GeoTuple2D_F64 pt, GeoTuple2D_F64 solution)
      Rotates a 2D point by the specified angle.
      Parameters:
      solution - where the solution is written to. Can be the same point as 'pt'.
    • rotate

      public static void rotate(double c, double s, GeoTuple2D_F64 pt, GeoTuple2D_F64 solution)
      Rotates a 2D point by the specified angle.
      Parameters:
      c - Cosine of theta
      s - Sine of theta
      pt -
      solution - where the solution is written to. Can be the same point as 'pt'.
    • mult

      public static <T extends GeoTuple3D_F64> T mult(org.ejml.data.DMatrixRMaj M, T pt, @Nullable T result)
      mod = M*pt

      pt and mod can be the same reference.

      Parameters:
      M -
      pt -
      result - Storage for output. Can be the same instance as param 'pt'. Modified.
    • mult4

      public static <T extends GeoTuple3D_F64> T mult4(org.ejml.data.DMatrixRMaj M, T pt, @Nullable T result)
      mod = M*pt

      pt and mod can be the same reference. M is a 4x4 matrix. Homogenous coordinates with implicit w = 1

      Parameters:
      result - Storage for output. Can be the same instance as param 'pt'. Modified.
    • mult

      public static <T extends GeoTuple2D_F64> T mult(org.ejml.data.DMatrixRMaj M, GeoTuple3D_F64 pt, T mod)

      mod = M*pt
      where mod is a 2D point that has an implicit z=1.

      Multiplies the 3x3 matrix against the 3D point, and normalizes the 2D point output by dividing the x and y values by the found z.

    • mult

      public static void mult(org.ejml.data.DMatrixRMaj M, GeoTuple2D_F64 pt, GeoTuple3D_F64 mod)

      mod = M*pt
      where pt has z=1 implicitly.

      Multiplies the 3x3 matrix against the 2D point, which has an implicit z=1 value, and the output is a 3d point.

    • mult

      public static <T extends GeoTuple2D_F64> T mult(org.ejml.data.DMatrixRMaj M, T pt, @Nullable T mod)

      Computes mod = M*pt, where both pt and mod are in homogeneous coordinates with z assumed to be equal to 1, and M is a 3x3 matrix.

      'pt' and 'mod' can be the same point.

      Parameters:
      M - 3x3 matrix
      pt - Homogeneous point with z=1
      mod - Storage for the computation. If null a new point is declared. Can be same instance as pt.
      Returns:
      Result of computation.
    • mult

      public static void mult(org.ejml.data.DMatrixRMaj P, GeoTuple4D_F64 X, GeoTuple3D_F64 mod)
      x = P*X
      Parameters:
      P - Projective 3x4 matrix
      X - 3D point in homogenous coordinates
      mod - 2D point in homogenous coordinates
    • mult

      public static void mult(org.ejml.data.DMatrixRMaj P, GeoTuple4D_F64 X, GeoTuple4D_F64 mod)
      x = P*X
      Parameters:
      P - 4x4 matrix
      X - 3D point in homogenous coordinates
      mod - 3D point in homogenous coordinates
    • mult

      public static void mult(org.ejml.data.DMatrixRMaj P, GeoTuple4D_F64 X, GeoTuple2D_F64 mod)
      x = (P*X)/z
      Parameters:
      P - Projective 3x4 matrix
      X - 3D point in homogenous coordinates
      mod - 2D point in coordinates
    • multCrossA

      public static org.ejml.data.DMatrixRMaj multCrossA(GeoTuple2D_F64 A, org.ejml.data.DMatrixRMaj M, @Nullable @Nullable org.ejml.data.DMatrixRMaj result)

      Computes the following:
      result = cross(A)*M
      where M and result are 3x3 matrices, cross(A) is the cross product matrix of A.

      Parameters:
      A - 2D homogenous coordinate (implicit z = 1) that is internally converted into cross product matrix.
      M - 3x3 matrix.
      result - Storage for results. Can be null.
      Returns:
      Results.
    • multCrossATransA

      public static org.ejml.data.DMatrixRMaj multCrossATransA(GeoTuple2D_F64 A, org.ejml.data.DMatrixRMaj M, @Nullable @Nullable org.ejml.data.DMatrixRMaj result)

      Computes the following:
      result = cross(A)T*M
      where M and result are 3x3 matrices, cross(A) is the cross product matrix of A.

      Parameters:
      A - 2D homogenous coordinate (implicit z = 1) that is internally converted into cross product matrix.
      M - 3x3 matrix.
      result - Storage for results. Can be null.
      Returns:
      Results.
    • multCrossA

      public static org.ejml.data.DMatrixRMaj multCrossA(GeoTuple3D_F64 A, org.ejml.data.DMatrixRMaj M, @Nullable @Nullable org.ejml.data.DMatrixRMaj result)

      Computes the following:
      result = cross(A)*M
      where M and result are 3x3 matrices, cross(A) is the cross product matrix of A.

      Parameters:
      A - 3D coordinate that is internally converted into cross product matrix.
      M - 3x3 matrix.
      result - Storage for results. Can be null.
      Returns:
      Results.
    • multCrossATransA

      public static org.ejml.data.DMatrixRMaj multCrossATransA(GeoTuple3D_F64 A, org.ejml.data.DMatrixRMaj M, @Nullable @Nullable org.ejml.data.DMatrixRMaj result)

      Computes the following:
      result = cross(A)T*M
      where M and result are 3x3 matrices, cross(A) is the cross product matrix of A.

      Parameters:
      A - 3D coordinate that is internally converted into cross product matrix.
      M - 3x3 matrix.
      result - Storage for results. Can be null.
      Returns:
      Results.
    • multTran

      public static <T extends GeoTuple3D_F64> T multTran(org.ejml.data.DMatrixRMaj M, T pt, @Nullable T mod)
      mod = MT*pt. Both pt and mod can be the same instance.
    • multTran

      public static <T extends GeoTuple3D_F64> T multTran(org.ejml.data.DMatrixRMaj M, GeoTuple2D_F64 pt, T mod)
      mod = MT*pt
      where pt.z = 1 implicitly.
      Parameters:
      M - 3 by 3 matrix.
      pt - 2D point in homogeneous coordinates. Implicit z = 1
      mod - 2D point in homogeneous coordinates. Implicit z = 1
      Returns:
      2D point in homogeneous coordinates. Implicit z = 1
    • multTran

      public static <T extends GeoTuple2D_F64> T multTran(org.ejml.data.DMatrixRMaj M, GeoTuple2D_F64 pt, T mod)
      mod = MT*pt
      where pt.z = 1 implicitly.
      Parameters:
      M - 3 by 3 matrix.
      pt - 2D point in homogeneous coordinates. Implicit z = 1
      mod - 2D point in homogeneous coordinates. Implicit z = 1
      Returns:
      2D point in homogeneous coordinates. Implicit z = 1
    • innerProd

      public static double innerProd(GeoTuple3D_F64 a, org.ejml.data.DMatrixRMaj M, GeoTuple3D_F64 b)

      ret = aT*M*b

      Parameters:
      a - 3D point.
      M - 3 by 3 matrix.
      b - 3D point.
      Returns:
      scalar number
    • innerProdTranM

      public static double innerProdTranM(GeoTuple3D_F64 a, org.ejml.data.DMatrixRMaj M, GeoTuple3D_F64 b)

      Computes the inner matrix product:
      ret = xTATy

      Parameters:
      a - 3D point.
      M - 3 by 3 matrix.
      b - 3D point.
      Returns:
      scalar number
    • outerProd

      public static org.ejml.data.DMatrixRMaj outerProd(GeoTuple3D_F64 a, GeoTuple3D_F64 b, @Nullable @Nullable org.ejml.data.DMatrixRMaj ret)
      Computes the outer product of two vectors:
      O = a*bT
      Parameters:
      a - 3D vector
      b - 3D vector
      ret - 3 x 3 matrix or null.
      Returns:
      outer product of two 3d vectors
    • addOuterProd

      public static org.ejml.data.DMatrixRMaj addOuterProd(org.ejml.data.DMatrixRMaj A, double scalar, GeoTuple3D_F64 b, GeoTuple3D_F64 c, @Nullable @Nullable org.ejml.data.DMatrixRMaj ret)
      Adds the outer product of two vectors onto a matrix:
      ret = A + scalar*a*bT
      Parameters:
      A - 3x3 matrix
      b - 3D vector
      c - 3D vector
      ret - 3 x 3 matrix or null.
      Returns:
      outer product of two 3d vectors
    • innerProd

      public static double innerProd(GeoTuple2D_F64 a, org.ejml.data.DMatrixRMaj M, GeoTuple2D_F64 b)

      Computes the inner matrix product: ret = a'*M*b
      where ret is a scalar number. 'a' and 'b' are automatically converted into homogeneous coordinates.

      Parameters:
      a - 2D point.
      M - 3 by 3 matrix.
      b - 2D point.
      Returns:
      scalar number,
    • dot

      public static double dot(GeoTuple3D_F64 a, GeoTuple3D_F64 b)

      Dot product: ret = aTb

      Parameters:
      a - A tuple.
      b - A tuple.
      Returns:
      scalar
    • scale

      public static void scale(GeoTuple3D_F64 p, double v)

      Multiplies each element in the tuple by 'v'.
      pi=pi*v

      Parameters:
      p - tuple.
      v - scaling factor.
    • divide

      public static void divide(GeoTuple3D_F64 p, double v)
      Divides each element by 'v'
      Parameters:
      p - tuple
      v - divisor
    • changeSign

      public static void changeSign(GeoTuple3D_F64 t)

      Changes the sign of the vector:

      T = -T

      Parameters:
      t - Vector whose sign is being changed. Modified.
    • toMatrix

      public static org.ejml.data.DMatrixRMaj toMatrix(GeoTuple3D_F64 in, @Nullable @Nullable org.ejml.data.DMatrixRMaj out)
      Converts a GeoTuple3D_F64 into DMatrixRMaj
      Parameters:
      in - Input vector
      out - Output matrix. If null a new matrix will be declared
      Returns:
      Converted matrix
    • toTuple3D

      public static void toTuple3D(org.ejml.data.DMatrixRMaj in, GeoTuple3D_F64 out)
      Converts a DMatrixRMaj into GeoTuple3D_F64
      Parameters:
      in - Input matrix
      out - Output vector.