public class PlueckerLineGeometry extends Object
Modifier and Type | Field and Description |
---|---|
static int |
ELLIPTIC |
static int |
HYPERBOLIC |
static int |
LINE_SPACE |
static int |
SPHERE_SPACE |
Constructor and Description |
---|
PlueckerLineGeometry() |
Modifier and Type | Method and Description |
---|---|
static double[] |
closestPoint(double[] point,
double[] line,
int metric) |
static double[] |
conjugateWithRespectToComplex(double[] dst,
double[] complex,
double[] line) |
static double |
cosineBetweenLines(double[] line1,
double[] line2) |
static double |
distanceBetweenLines(double[] l1,
double[] l2) |
static double[] |
dualizeLine(double[] dst,
double[] src)
Pluecker coordinates for the same line are different depending on
whether the line is considered as the join of two points or the cut of two planes.
|
static double |
getTolerance() |
static double[] |
inducedP5ProjFromP3Proj(double[] dst,
double[] p3m)
TODO: create two versions of this, one for collineations, one for correlations
|
static double |
innerProduct(double[] l0,
double[] l1) |
static double[] |
intersectionPlane(double[] dst,
double[] line0,
double[] line1) |
static double[] |
intersectionPoint(double[] dst,
double[] line0,
double[] line1) |
static double[] |
intersectionPointUnchecked(double[] dst,
double[] line0,
double[] line1) |
boolean |
isInfinite(double[] line) |
static boolean |
isValidLine(double[] ds) |
static double[] |
lineFromPlanes(double[] dst,
double[] plane0,
double[] plane1) |
static double[] |
lineFromPoints(double[] dst,
double[] p0,
double[] p1)
Calculate Pluecker coordinates for the line spanned by p0 and p1.
|
static double[] |
lineIntersectPlane(double[] point,
double[] plueckerLine,
double[] plane) |
static double[] |
lineJoinPoint(double[] dst,
double[] plueckerLine,
double[] point) |
static double[] |
lineToSkewMatrix(double[] m,
double[] pl)
Pluecker line coordinates can be arranged in a 4x4 skew symmetric matrix M such
that M is the polarizing operator: if the original line was produced by two points,
then it acts on points to give the plane spanned
by the point and the line; if it was generated by two planes, then it acts on planes to give
the intersection point of the line and the plane.
|
static double[] |
normalize(double[] dst,
double[] src) |
static double[] |
nullPlane(double[] dst,
double[] complex,
double[] point) |
static double[] |
nullPoint(double[] dst,
double[] complex,
double[] plane) |
static double[] |
permuteCoordinates(double[] dst,
double[] src,
int[] perm)
reorder the pluecker line coordinates to reflect the coordinates corresponding to
a given permutation of the coordinates, specified by the array perm.
|
static double[] |
polarize(double[] dst,
double[] src,
int metric) |
static double[] |
projectPointOntoLine(double[] dst,
double[] p,
double[] v0,
double[] v1,
int metric)
Project the point p onto the line spanned by v0 and v1 perpendicularly.
|
static double[] |
projectPointOntoLine(double[] dst,
double[] p,
double[] line,
int metric) |
public static final int ELLIPTIC
public static final int HYPERBOLIC
public static final int LINE_SPACE
public static final int SPHERE_SPACE
public static double[] closestPoint(double[] point, double[] line, int metric)
public static double[] conjugateWithRespectToComplex(double[] dst, double[] complex, double[] line)
public static double cosineBetweenLines(double[] line1, double[] line2)
public static double distanceBetweenLines(double[] l1, double[] l2)
public static double[] dualizeLine(double[] dst, double[] src)
dst
- src
- public static double getTolerance()
public static double[] inducedP5ProjFromP3Proj(double[] dst, double[] p3m)
dst
- p3m
- public static double innerProduct(double[] l0, double[] l1)
public static double[] intersectionPlane(double[] dst, double[] line0, double[] line1)
public static double[] intersectionPoint(double[] dst, double[] line0, double[] line1)
public static double[] intersectionPointUnchecked(double[] dst, double[] line0, double[] line1)
public boolean isInfinite(double[] line)
public static boolean isValidLine(double[] ds)
public static double[] lineFromPlanes(double[] dst, double[] plane0, double[] plane1)
public static double[] lineFromPoints(double[] dst, double[] p0, double[] p1)
dst
- p0
- p1
- public static double[] lineIntersectPlane(double[] point, double[] plueckerLine, double[] plane)
point
- plueckerLine
- plane
- de.jreality.math.P3#lineIntersectPlane(double[], double[], double[], double[])}
public static double[] lineJoinPoint(double[] dst, double[] plueckerLine, double[] point)
dst
- plueckerLine
- point
- de.jreality.math.P3#lineJoinPoint(double[], double[], double[], double[])}
public static double[] lineToSkewMatrix(double[] m, double[] pl)
m
- pl
- public static double[] normalize(double[] dst, double[] src)
public static double[] nullPlane(double[] dst, double[] complex, double[] point)
public static double[] nullPoint(double[] dst, double[] complex, double[] plane)
public static double[] permuteCoordinates(double[] dst, double[] src, int[] perm)
dst
- src
- perm
- public static double[] polarize(double[] dst, double[] src, int metric)
public static double[] projectPointOntoLine(double[] dst, double[] p, double[] v0, double[] v1, int metric)
dst
- p
- v0
- v1
- metric
- a metric from P3! (not P5)public static double[] projectPointOntoLine(double[] dst, double[] p, double[] line, int metric)