public abstract class IntersectionIdentifier extends Object
It is assumed that we're only interested with t=[0,1] for both segments, so intersections outside of this range are ignored. TODO: This uses the BinarySearchIntersectionIdentifier, which contains a warning.
| Modifier and Type | Class and Description |
|---|---|
static interface |
IntersectionIdentifier
An interface to receive intersection information as it is observed.
|
static class |
IntersectionIdentifier
|
static class |
IntersectionIdentifier
|
| Constructor and Description |
|---|
IntersectionIdentifier()
|
| Modifier and Type | Method and Description |
|---|---|
abstract int |
cubicCubic(double ax1, double bx1, double cx1, double dx1, double ay1, double by1, double cy1, double dy1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two cubic curves, expressed as parametric equations.
|
int |
cubicCubicBezier(double x0a, double y0a, double cx0a, double cy0a, double cx1a, double cy1a, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two cubic curves, expressed as bezier control points.
|
static IntersectionIdentifier |
get()
|
void |
getIntersections(Shape
|
void |
getIntersections(Shape
|
abstract int |
lineCubic(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a line and a cubic curve, expressed as parametric equations.
|
int |
lineCubicBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a line and a cubic curve, expressed as bezier control points.
|
int |
lineLine(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double ay2, double by2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two lines, expressed as parametric equations.
|
int |
lineLineBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two lines, expressed as bezier control points.
|
abstract int |
lineQuadratic(double ax1, double bx1, double ay1, double by1, double ax2, double bx2, double cx2, double ay2, double by2, double cy2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a line and a parabola, expressed as parametric equations.
|
int |
lineQuadraticBezier(double x0a, double y0a, double x1a, double y1a, double x0b, double y0b, double cxb, double cyb, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a line and a parabola, expressed as bezier control points.
|
abstract int |
quadraticCubic(double ax1, double bx1, double cx1, double ay1, double by1, double cy1, double ax2, double bx2, double cx2, double dx2, double ay2, double by2, double cy2, double dy2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a parabola and a cubic curve, expressed as parametric equations.
|
int |
quadraticCubicBezier(double x0a, double y0a, double cxa, double cya, double x1a, double y1a, double x0b, double y0b, double cx0b, double cy0b, double cx1b, double cy1b, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of a parabola and a cubic curve, expressed as bezier control points.
|
abstract int |
quadraticQuadratic(double ax1, double bx1, double cx1, double ay1, double by1, double cy1, double ax2, double bx2, double cx2, double ay2, double by2, double cy2, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two parabolas, expressed as parametric equations.
|
int |
quadraticQuadraticBezier(double x0a, double y0a, double cxa, double cya, double x1a, double y1a, double x0b, double y0b, double cxb, double cyb, double x1b, double y1b, double[] dest, int offset, IntersectionIdentifier
Identify the intersection(s) of two parabolas, expressed as bezier control points.
|
static void |
set(IntersectionIdentifier
|
public static IntersectionIdentifierget()
public static void set(IntersectionIdentifieri)
public void getIntersections(Shapeshape1, Shape shape2, IntersectionIdentifier .IntersectionListener listener)
public void getIntersections(Shapeshape1, AffineTransform transform1, Shape shape2, AffineTransform transform2, IntersectionIdentifier .IntersectionListener listener)
public int lineLine(double ax1,
double bx1,
double ay1,
double by1,
double ax2,
double bx2,
double ay2,
double by2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2+bx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2+bx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2+by2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2+by2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int lineLineBezier(double x0a,
double y0a,
double x1a,
double y1a,
double x0b,
double y0b,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the first line
y0a - the y-coordinate of the first end point of the first line
x1a - the x-coordinate of the second end point of the first line
y1a - the y-coordinate of the second end point of the first line
x0b - the x-coordinate of the first end point of the second line
y0b - the y-coordinate of the first end point of the second line
x1b - the x-coordinate of the second end point of the second line
y1b - the y-coordinate of the second end point of the second line
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public abstract int lineQuadratic(double ax1,
double bx1,
double ay1,
double by1,
double ax2,
double bx2,
double cx2,
double ay2,
double by2,
double cy2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
cy2 - the coefficient "cy2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int lineQuadraticBezier(double x0a,
double y0a,
double x1a,
double y1a,
double x0b,
double y0b,
double cxb,
double cyb,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the line
y0a - the y-coordinate of the first end point of the line
x1a - the x-coordinate of the second end point of the line
y1a - the y-coordinate of the second end point of the line
x0b - the x-coordinate of the first end point of the quadratic curve
y0b - the y-coordinate of the first end point of the quadratic curve
cxb - the x-coordinate of the control point of the quadratic curve
cyb - the y-coordinate of the control point of the quadratic curve
x1b - the x-coordinate of the second end point of the quadratic curve
y1b - the y-coordinate of the second end point of the quadratic curve
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public abstract int lineCubic(double ax1,
double bx1,
double ay1,
double by1,
double ax2,
double bx2,
double cx2,
double dx2,
double ay2,
double by2,
double cy2,
double dy2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1+bx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1+bx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1+by1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1+by1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int lineCubicBezier(double x0a,
double y0a,
double x1a,
double y1a,
double x0b,
double y0b,
double cx0b,
double cy0b,
double cx1b,
double cy1b,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the line
y0a - the y-coordinate of the first end point of the line
x1a - the x-coordinate of the second end point of the line
y1a - the y-coordinate of the second end point of the line
x0b - the x-coordinate of the first end point of the cubic curve
y0b - the y-coordinate of the first end point of the cubic curve
cx0b - the x-coordinate of the first control point of the cubic curve
cy0b - the y-coordinate of the first control point of the cubic curve
cx1b - the x-coordinate of the second control point of the cubic curve
cy1b - the y-coordinate of the second control point of the cubic curve
x1b - the x-coordinate of the second end point of the cubic curve
y1b - the y-coordinate of the second end point of the cubic curve
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public abstract int quadraticQuadratic(double ax1,
double bx1,
double cx1,
double ay1,
double by1,
double cy1,
double ax2,
double bx2,
double cx2,
double ay2,
double by2,
double cy2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2+bx2*t2+cx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
cy2 - the coefficient "cy2" in the equation "y2(t2) = ay2*t2*t2+by2*t2+cy2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int quadraticQuadraticBezier(double x0a,
double y0a,
double cxa,
double cya,
double x1a,
double y1a,
double x0b,
double y0b,
double cxb,
double cyb,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the first quadratic curve
y0a - the y-coordinate of the first end point of the first quadratic curve
cxa - the x-coordinate of the control point of the first quadratic curve
cya - the y-coordinate of the control point of the first quadratic curve
x1a - the x-coordinate of the second end point of the first quadratic curve
y1a - the y-coordinate of the second end point of the first quadratic curve
x0b - the x-coordinate of the first end point of the second quadratic curve
y0b - the y-coordinate of the first end point of the second quadratic curve
cxb - the x-coordinate of the control point of the second quadratic curve
cyb - the y-coordinate of the control point of the second quadratic curve
x1b - the x-coordinate of the second end point of the second quadratic curve
y1b - the y-coordinate of the second end point of the second quadratic curve
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public abstract int quadraticCubic(double ax1,
double bx1,
double cx1,
double ay1,
double by1,
double cy1,
double ax2,
double bx2,
double cx2,
double dx2,
double ay2,
double by2,
double cy2,
double dy2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1+bx1*t1+cx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1+by1*t1+cy1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int quadraticCubicBezier(double x0a,
double y0a,
double cxa,
double cya,
double x1a,
double y1a,
double x0b,
double y0b,
double cx0b,
double cy0b,
double cx1b,
double cy1b,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the quadratic curve
y0a - the y-coordinate of the first end point of the quadratic curve
cxa - the x-coordinate of the control point of the quadratic curve
cya - the y-coordinate of the control point of the quadratic curve
x1a - the x-coordinate of the second end point of the quadratic curve
y1a - the y-coordinate of the second end point of the quadratic curve
x0b - the x-coordinate of the first end point of the cubic curve
y0b - the y-coordinate of the first end point of the cubic curve
cx0b - the x-coordinate of the first control point of the cubic curve
cy0b - the y-coordinate of the first control point of the cubic curve
cx1b - the x-coordinate of the second control point of the cubic curve
cy1b - the y-coordinate of the second control point of the cubic curve
x1b - the x-coordinate of the second end point of the cubic curve
y1b - the y-coordinate of the second end point of the cubic curve
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public abstract int cubicCubic(double ax1,
double bx1,
double cx1,
double dx1,
double ay1,
double by1,
double cy1,
double dy1,
double ax2,
double bx2,
double cx2,
double dx2,
double ay2,
double by2,
double cy2,
double dy2,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
ax1 - the coefficient "ax1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
bx1 - the coefficient "bx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
cx1 - the coefficient "cx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
dx1 - the coefficient "dx1" in the equation "x1(t1) = ax1*t1*t1*t1+bx1*t1*t1+cx1*t1+dx1"
ay1 - the coefficient "ay1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
by1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
cy1 - the coefficient "by1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
dy1 - the coefficient "dy1" in the equation "y1(t1) = ay1*t1*t1*t1+by1*t1*t1+cy1*t1+dy1"
ax2 - the coefficient "ax2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
bx2 - the coefficient "bx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
cx2 - the coefficient "cx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
dx2 - the coefficient "dx2" in the equation "x2(t2) = ax2*t2*t2*t2+bx2*t2*t2+cx2*t2+dx2"
ay2 - the coefficient "ay2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
by2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
cy2 - the coefficient "by2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dy2 - the coefficient "dy2" in the equation "y2(t2) = ay2*t2*t2*t2+by2*t2*t2+cy2*t2+dy2"
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.
public int cubicCubicBezier(double x0a,
double y0a,
double cx0a,
double cy0a,
double cx1a,
double cy1a,
double x1a,
double y1a,
double x0b,
double y0b,
double cx0b,
double cy0b,
double cx1b,
double cy1b,
double x1b,
double y1b,
double[] dest,
int offset,
IntersectionIdentifier.Return returnType)
x0a - the x-coordinate of the first end point of the first cubic curve
y0a - the y-coordinate of the first end point of the first cubic curve
cx0a - the x-coordinate of the first control point of the first cubic curve
cy0a - the y-coordinate of the first control point of the first cubic curve
cx1a - the x-coordinate of the second control point of the first cubic curve
cy1a - the y-coordinate of the second control point of the first cubic curve
x1a - the x-coordinate of the second end point of the first cubic curve
y1a - the y-coordinate of the second end point of the first cubic curve
x0b - the x-coordinate of the first end point of the second cubic curve
y0b - the y-coordinate of the first end point of the second cubic curve
cx0b - the x-coordinate of the first control point of the second cubic curve
cy0b - the y-coordinate of the first control point of the second cubic curve
cx1b - the x-coordinate of the second control point of the second cubic curve
cy1b - the y-coordinate of the second control point of the second cubic curve
x1b - the x-coordinate of the second end point of the second cubic curve
y1b - the y-coordinate of the second end point of the second cubic curve
dest - the destination to write the time intersections in.
offset - the offset in the array to start writing at.
returnType - the type of data to store in
dest.