Interface Segment3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>
-
- Type Parameters:
ST- is the type of the general implementation.IT- is the type of the implementation of this shape.IE- is the type of the path elements.P- is the type of the points.V- is the type of the vectors.B- is the type of the bounding boxes.
- All Superinterfaces:
Cloneable,JsonableObject,Serializable,Shape3ai<ST,IT,IE,P,V,B>,Shape3D<ST,IT,PathIterator3ai<IE>,P,V,B>
- All Known Implementing Classes:
Segment3i,Segment3ifx,SegmentPoint3i
public interface Segment3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>> extends Shape3ai<ST,IT,IE,P,V,B>
Fonctional interface that represented a 2D segment/line on a plane.- Since:
- 13.0
- Version:
- 17.0 2020-01-04 14:41:43
- Author:
- Stéphane GALLAND
- Maven Group Id:
- org.arakhne.afc.core
- Maven Artifact Id:
- mathgeom
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classSegment3ai.AbstractSegmentPathIterator<IE extends PathElement3ai>Abstract iterator on the path elements of the segment.static classSegment3ai.BresenhamLineIterator<P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>>The Bresenham line algorithm is an algorithm which determines which points in an n-dimensional raster should be plotted in order to form a close approximation to a straight line between two given points.static classSegment3ai.SegmentPathIterator<IE extends PathElement3ai>Iterator on the path elements of the segment.static classSegment3ai.TransformedSegmentPathIterator<IE extends PathElement3ai>Iterator on the path elements of the segment.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default voidclear()Reset this shape to be equivalent to an just-created instance of this shape type.default booleanclipToRectangle(int rxmin, int rymin, int rzmin, int rxmax, int rymax, int rzmax)Clip the segment against the clipping rectangle according to the Cohen-Sutherland algorithm.static voidcomputeClosestPointToPoint(int ax, int ay, int az, int bx, int by, int bz, int px, int py, int pz, Point3D<?,?> result)Replies the closest point in a circle to a point.static doublecomputeClosestPointToRectangle(int sx1, int sy1, int sz1, int sx2, int sy2, int sz2, int rx, int ry, int rz, int rwidth, int rheight, int rdepth, Point3D<?,?> result)Replies the point on the segment that is closest to the rectangle.static doublecomputeClosestPointToSegment(int s1x1, int s1y1, int s1z1, int s1x2, int s1y2, int s1z2, int s2x1, int s2y1, int s2z1, int s2x2, int s2y2, int s2z2, Point3D<?,?> result)Replies the point on the first segment that is closest to the second segment.static doublecomputeClosestPointToSegment(int s1x1, int s1y1, int s1z1, int s1x2, int s1y2, int s1z2, int s2x1, int s2y1, int s2z1, int s2x2, int s2y2, int s2z2, Point3D<?,?> resultOnFirstSegment, Point3D<?,?> resultOnSecondSegment)Replies the point on the first segment that is closest to the second segment.static intcomputeCrossingsFromPoint(int crossing, int px, int py, int pz, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the up/bottom borders of the ray extending to the right from (px,py).static intcomputeCrossingsFromPoint(int crossing, int px, int py, int pz, int x0, int y0, int z0, int x1, int y1, int z1, boolean enableTopBorder, boolean enableBottomBorder)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the up/bottom borders of the ray extending to the right from (px,py).static intcomputeCrossingsFromRect(int crossings, int rxmin, int rymin, int rzmin, int rxmax, int rymax, int rzmax, int x0, int y0, int z0, int x1, int y1, int z1)Accumulate the number of times the line crosses the shadow extending to the right of the rectangle.static intcomputeCrossingsFromSegment(int crossings, int sx1, int sy1, int sz1, int sx2, int sy2, int sz2, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the segment (sx0,sy0) to (sx1,sy1) extending to the right.static intcomputeCrossingsFromSphere(int crossings, int cx, int cy, int cz, int radius, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0,z0) to (x1,y1,z1) crosses the sphere (ex0,ey0,ez0,rad) extending to the right.static voidcomputeFarthestPointTo(int ax, int ay, int az, int bx, int by, int bz, int px, int py, int pz, Point3D<?,?> result)Replies the farthest point in a circle to a point.static intcomputeIntersectionTypeSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4, boolean enableThirdPoint, boolean enableFourthPoint, Point3D<?,?> intersectionPoint)Replies if two segments are intersecting pixel per pixel.static intcomputeSideLinePoint(int x1, int y1, int z1, int x2, int y2, int z2, int px, int py, int pz)Replies on which side of a line the given point is located.default booleancontains(int x, int y, int z)Replies if the given point is inside this shape.default booleancontains(RectangularPrism3ai<?,?,?,?,?,?> rectangularPrism)Replies if the given rectangle is inside this shape.default booleanequalsToShape(IT shape)Replies this shape is equal to the given shape.default PgetClosestPointTo(Path3ai<?,?,?,?,?,?> path)Replies the closest point on this shape to the given rectangle.default PgetClosestPointTo(RectangularPrism3ai<?,?,?,?,?,?> rectangle)Replies the closest point on this shape to the given rectangle.default PgetClosestPointTo(Segment3ai<?,?,?,?,?,?> segment)Replies the closest point on this shape to the given rectangle.default PgetClosestPointTo(Sphere3ai<?,?,?,?,?,?> circle)Replies the closest point on this shape to the given rectangle.default PgetClosestPointTo(Point3D<?,?> pt)Replies the point on the shape that is closest to the given point.default doublegetDistanceL1(Point3D<?,?> pt)Computes the L-1 (Manhattan) distance between this shape and point p1.default doublegetDistanceLinf(Point3D<?,?> pt)Computes the L-infinite distance between this shape and point p1.default doublegetDistanceSquared(Point3D<?,?> pt)Replies the squared value of the minimal distance from this shape to the given point.default PgetFarthestPointTo(Point3D<?,?> pt)Replies the point on the shape that is farthest the given point.default PgetP1()Replies the first point.default PgetP2()Replies the second point.default PathIterator3ai<IE>getPathIterator(Transform3D transform)Replies the elements of the paths.default Iterator<P>getPointIterator()Replies an iterator on the points of the segment.intgetX1()Replies the X of the first point.intgetX2()Replies the X of the second point.intgetY1()Replies the Y of the first point.intgetY2()Replies the Y of the second point.intgetZ1()Replies the Z of the first point.intgetZ2()Replies the Z of the second point.default booleanintersects(MultiShape3ai<?,?,?,?,?,?,?> multishape)Replies if this shape is intersecting the given multishape.default booleanintersects(PathIterator3ai<?> iterator)Replies if this shape is intersecting the path described by the given iterator.default booleanintersects(RectangularPrism3ai<?,?,?,?,?,?> rectangularPrism)Replies if this shape is intersecting the given rectangular prism.default booleanintersects(Segment3ai<?,?,?,?,?,?> segment)Replies if this shape is intersecting the given segment.default booleanintersects(Sphere3ai<?,?,?,?,?,?> sphere)Replies if this shape is intersecting the given sphere.static booleanintersectsSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4)Replies if two segments are intersecting.static booleanintersectsSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4, boolean enableThirdPoint, boolean enableFourthPoint, Point3D<?,?> intersectionPoint)Replies if two segments are intersecting pixel per pixel.default booleanisEmpty()Replies if this shape is empty.voidset(int x1, int y1, int z1, int x2, int y2, int z2)Change the line.default voidset(IT shape)Set this shape with the attributes of the given shape.default voidset(Point3D<?,?> firstPoint, Point3D<?,?> secondPoint)Change the line.default voidsetP1(int x, int y, int z)Change the first point.default voidsetP1(Point3D<?,?> point)Change the first point.default voidsetP2(int x, int y, int z)Change the second point.default voidsetP2(Point3D<?,?> point)Change the second point.voidsetX1(int x)Change the X of the first point.voidsetX2(int x)Change the X of the second point.voidsetY1(int y)Change the Y of the first point.voidsetY2(int y)Change the Y of the second point.voidsetZ1(int z)Change the Z of the first point.voidsetZ2(int z)Change the Z of the second point.default voidtoBoundingBox(B box)Replies the bounds of the shape.default voidtransform(Transform3D transform)Transform the current segment.default voidtranslate(int dx, int dy, int dz)Translate the shape.-
Methods inherited from interface org.arakhne.afc.vmutil.json.JsonableObject
toJson
-
Methods inherited from interface org.arakhne.afc.math.geometry.d3.ai.Shape3ai
contains, contains, createTransformedShape, getClosestPointTo, getClosestPointTo, getDistanceSquared, getDistanceSquared, getDistanceSquared, getDistanceSquared, getDistanceSquared, getDistanceSquared, getGeomFactory, intersects, intersects, toBoundingBox, translate
-
Methods inherited from interface org.arakhne.afc.math.geometry.d3.Shape3D
clone, equalsToPathIterator, getDistance, getDistance, getPathIterator, operator_add, operator_and, operator_and, operator_minus, operator_multiply, operator_plus, operator_remove, operator_upTo
-
-
-
-
Method Detail
-
computeClosestPointToPoint
@Pure static void computeClosestPointToPoint(int ax, int ay, int az, int bx, int by, int bz, int px, int py, int pz, Point3D<?,?> result)Replies the closest point in a circle to a point.- Parameters:
ax- is the x-coordinate of the first point of the segmentay- is the y-coordinate of the first point of the segmentaz- is the z-coordinate of the first point of the segmentbx- is the x-coordinate of the second point of the segmentby- is the y-coordinate of the second point of the segmentbz- is the z-coordinate of the second point of the segmentpx- is the x-coordinate of the pointpy- is the y-coordinate of the pointpz- is the z-coordinate of the pointresult- the closest point in the segment to the point.
-
computeClosestPointToSegment
@Pure static double computeClosestPointToSegment(int s1x1, int s1y1, int s1z1, int s1x2, int s1y2, int s1z2, int s2x1, int s2y1, int s2z1, int s2x2, int s2y2, int s2z2, Point3D<?,?> result)Replies the point on the first segment that is closest to the second segment.- Parameters:
s1x1- is the x coordinate of the first point of the first segment.s1y1- is the y coordinate of the first point of the first segment.s1z1- is the z coordinate of the first point of the first segment.s1x2- is the x coordinate of the second point of the first segment.s1y2- is the y coordinate of the second point of the first segment.s1z2- is the z coordinate of the second point of the first segment.s2x1- is the x coordinate of the first point of the second segment.s2y1- is the y coordinate of the first point of the second segment.s2z1- is the z coordinate of the first point of the second segment.s2x2- is the x coordinate of the second point of the second segment.s2y2- is the y coordinate of the second point of the second segment.s2z2- is the z coordinate of the second point of the second segment.result- the is point on the shape.- Returns:
- the square distance between the segments.
-
computeClosestPointToSegment
@Pure static double computeClosestPointToSegment(int s1x1, int s1y1, int s1z1, int s1x2, int s1y2, int s1z2, int s2x1, int s2y1, int s2z1, int s2x2, int s2y2, int s2z2, Point3D<?,?> resultOnFirstSegment, Point3D<?,?> resultOnSecondSegment)Replies the point on the first segment that is closest to the second segment.- Parameters:
s1x1- is the x coordinate of the first point of the first segment.s1y1- is the y coordinate of the first point of the first segment.s1z1- is the z coordinate of the first point of the first segment.s1x2- is the x coordinate of the second point of the first segment.s1y2- is the y coordinate of the second point of the first segment.s1z2- is the z coordinate of the second point of the first segment.s2x1- is the x coordinate of the first point of the second segment.s2y1- is the y coordinate of the first point of the second segment.s2z1- is the z coordinate of the first point of the second segment.s2x2- is the x coordinate of the second point of the second segment.s2y2- is the y coordinate of the second point of the second segment.s2z2- is the z coordinate of the second point of the second segment.resultOnFirstSegment- the point on the first segment.resultOnSecondSegment- the point on the second segment.- Returns:
- the square distance between the segments.
-
computeClosestPointToRectangle
@Pure static double computeClosestPointToRectangle(int sx1, int sy1, int sz1, int sx2, int sy2, int sz2, int rx, int ry, int rz, int rwidth, int rheight, int rdepth, Point3D<?,?> result)Replies the point on the segment that is closest to the rectangle.- Parameters:
sx1- is the x coordinate of the first point of the segment.sy1- is the y coordinate of the first point of the segment.sz1- is the z coordinate of the first point of the segment.sx2- is the x coordinate of the second point of the segment.sy2- is the y coordinate of the second point of the segment.sz2- is the z coordinate of the second point of the segment.rx- is the x coordinate of the rectangle.ry- is the y coordinate of the rectangle.rz- is the z coordinate of the rectangle.rwidth- is the width of the rectangle.rheight- is the height of the rectangle.rdepth- is the depth of the rectangle.result- the is point on the segment.- Returns:
- the square distance between the segments.
-
computeFarthestPointTo
@Pure static void computeFarthestPointTo(int ax, int ay, int az, int bx, int by, int bz, int px, int py, int pz, Point3D<?,?> result)Replies the farthest point in a circle to a point.- Parameters:
ax- is the x-coordinate of the first point of the segmentay- is the y-coordinate of the first point of the segmentaz- is the z-coordinate of the first point of the segmentbx- is the x-coordinate of the second point of the segmentby- is the y-coordinate of the second point of the segmentbz- is the z-coordinate of the second point of the segmentpx- is the x-coordinate of the pointpy- is the x-coordinate of the pointpz- is the x-coordinate of the pointresult- the farthest point in the segment to the point.
-
computeSideLinePoint
@Pure static int computeSideLinePoint(int x1, int y1, int z1, int x2, int y2, int z2, int px, int py, int pz)Replies on which side of a line the given point is located.A return value of 1 indicates that the line segment must turn in the direction that takes the positive X axis towards the negative Y axis. In the default coordinate system used by Java 2D, this direction is counterclockwise.
A return value of -1 indicates that the line segment must turn in the direction that takes the positive X axis towards the positive Y axis. In the default coordinate system by Java 2D, this direction is clockwise.
A return value of 0 indicates that the point lies exactly on the line segment.
- Parameters:
x1- the X coordinate of the start point of the specified line segmenty1- the Y coordinate of the start point of the specified line segmentz1- the Z coordinate of the start point of the specified line segmentx2- the X coordinate of the end point of the specified line segmenty2- the Y coordinate of the end point of the specified line segmentz2- the Z coordinate of the end point of the specified line segmentpx- the X coordinate of the specified point to be compared with the specified line segmentpy- the Y coordinate of the specified point to be compared with the specified line segmentpz- the Z coordinate of the specified point to be compared with the specified line segment- Returns:
- an integer that indicates the position of the third specified coordinates with respect to the line segment formed by the first two specified coordinates.
- See Also:
MathUtil.isEpsilonZero(double)
-
computeCrossingsFromSphere
@Pure static int computeCrossingsFromSphere(int crossings, int cx, int cy, int cz, int radius, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0,z0) to (x1,y1,z1) crosses the sphere (ex0,ey0,ez0,rad) extending to the right.When the line (x0;y0;z1) to (x1;y1;z1) is crossing one of the up or bottom borders of the shadow of the sphere, the crossings count is increased or decreased, depending if the line is going down or up, respectively. In the following figure, the sphere is represented. The "shadow" is the projection of the circle on the right. The red lines represent the up and bottom borders.
- Parameters:
crossings- is the initial value for the number of crossings.cx- is the center of the circle to extend.cy- is the center of the circle to extend.cz- is the center of the circle to extend.radius- is the radius of the circle to extend.x0- is the first point of the line.y0- is the first point of the line.z0- is the first point of the line.x1- is the second point of the line.y1- is the secondpoint of the line.z1- is the secondpoint of the line.- Returns:
- the crossing, or
GeomConstants.SHAPE_INTERSECTS.
-
computeCrossingsFromSegment
@Pure static int computeCrossingsFromSegment(int crossings, int sx1, int sy1, int sz1, int sx2, int sy2, int sz2, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the segment (sx0,sy0) to (sx1,sy1) extending to the right.When the line (x0;y0) to (x1;y1) is crossing one of the up or bottom borders of the shadow of the segment, the crossings count is increased or decreased, depending if the line is going down or up, respectively. In the following figure, the segment is represented. The "shadow" is the projection of the segment on the right. The red lines represent the up and bottom borders.
- Parameters:
crossings- is the initial value for the number of crossings.sx1- is the first point of the segment to extend.sy1- is the first point of the segment to extend.sz1- is the first point of the segment to extend.sx2- is the second point of the segment to extend.sy2- is the second point of the segment to extend.sz2- is the second point of the segment to extend.x0- is the first point of the line.y0- is the first point of the line.z0- is the first point of the line.x1- is the second point of the line.y1- is the secondpoint of the line.z1- is the secondpoint of the line.- Returns:
- the crossing, or
GeomConstants.SHAPE_INTERSECTS.
-
computeCrossingsFromRect
@Pure static int computeCrossingsFromRect(int crossings, int rxmin, int rymin, int rzmin, int rxmax, int rymax, int rzmax, int x0, int y0, int z0, int x1, int y1, int z1)Accumulate the number of times the line crosses the shadow extending to the right of the rectangle.When the line (x0;y0) to (x1;y1) is intersecting the rectangle, the value
GeomConstants.SHAPE_INTERSECTSis returned. When the line (x0;y0) to (x1;y1) is crossing one of the up or bottom borders of the shadow of the rectangle, the crossings count is increased or decreased, depending if the line is going down or up, respectively. In the following figure, the rectangle is represented. The "shadow" is the projection of the rectangle on the right. The red lines represent the up and bottom borders.- Parameters:
crossings- is the initial value for the number of crossings.rxmin- is the first corner of the rectangle.rymin- is the first corner of the rectangle.rzmin- is the first corner of the rectangle.rxmax- is the second corner of the rectangle.rymax- is the second corner of the rectangle.rzmax- is the second corner of the rectangle.x0- is the first point of the line.y0- is the first point of the line.z0- is the first point of the line.x1- is the second point of the line.y1- is the secondpoint of the line.z1- is the secondpoint of the line.- Returns:
- the crossing, or
GeomConstants.SHAPE_INTERSECTS.
-
computeCrossingsFromPoint
@Pure static int computeCrossingsFromPoint(int crossing, int px, int py, int pz, int x0, int y0, int z0, int x1, int y1, int z1)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the up/bottom borders of the ray extending to the right from (px,py). +x is returned for a crossing where the Y coordinate is increasing. -x is returned for a crossing where the Y coordinate is decreasing. x is the number of border crossed by the lines.The borders of the segment are the two side limits between the cells covered by the segment and the adjacents cells (not covered by the segment). In the following figure, the point (px;py) is represented. The "shadow line" is the projection of (px;py) on the right. The red lines represent the up and bottom borders.
- Parameters:
crossing- is the initial value of the crossing.px- is the reference point to test.py- is the reference point to test.pz- is the reference point to test.x0- is the first point of the line.y0- is the first point of the line.z0- is the first point of the line.x1- is the second point of the line.y1- is the secondpoint of the line.z1- is the secondpoint of the line.- Returns:
- the crossing,
GeomConstants.SHAPE_INTERSECTS
-
computeCrossingsFromPoint
@Pure static int computeCrossingsFromPoint(int crossing, int px, int py, int pz, int x0, int y0, int z0, int x1, int y1, int z1, boolean enableTopBorder, boolean enableBottomBorder)Calculates the number of times the line from (x0,y0) to (x1,y1) crosses the up/bottom borders of the ray extending to the right from (px,py). +x is returned for a crossing where the Y coordinate is increasing. -x is returned for a crossing where the Y coordinate is decreasing. x is the number of border crossed by the lines.The borders of the segment are the two side limits between the cells covered by the segment and the adjacents cells (not covered by the segment). In the following figure, the point (px;py) is represented. The "shadow line" is the projection of (px;py) on the right. The red lines represent the up and bottom borders.
- Parameters:
crossing- is the initial value of the crossing.px- is the reference point to test.py- is the reference point to test.pz- is the reference point to test.x0- is the first point of the line.y0- is the first point of the line.z0- is the first point of the line.x1- is the second point of the line.y1- is the second point of the line.z1- is the second point of the line.enableTopBorder- indicates if the top border must be enabled in the crossing computation.enableBottomBorder- indicates if the bottom border must be enabled in the crossing computation.- Returns:
- the crossing; or
GeomConstants.SHAPE_INTERSECTSif the segment is on the point.
-
intersectsSegmentSegment
@Pure static boolean intersectsSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4)Replies if two segments are intersecting. This function determines if the segments' lines are intersecting because using the pixel-based test. This function uses the pixels of the segments that are computed according to a Bresenham line algorithm.- Parameters:
x1- is the first point of the first segment.y1- is the first point of the first segment.z1- is the first point of the first segment.x2- is the second point of the first segment.y2- is the second point of the first segment.z2- is the second point of the first segment.x3- is the first point of the second segment.y3- is the first point of the second segment.z3- is the first point of the second segment.x4- is the second point of the second segment.y4- is the second point of the second segment.z4- is the second point of the second segment.- Returns:
trueif the two shapes are intersecting; otherwisefalse
-
intersectsSegmentSegment
static boolean intersectsSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4, boolean enableThirdPoint, boolean enableFourthPoint, Point3D<?,?> intersectionPoint)Replies if two segments are intersecting pixel per pixel. This function does not determine if the segments' lines are intersecting because using the pixel-based test. This function uses the pixels of the segments that are computed according to a Bresenham line algorithm.- Parameters:
x1- is the first point of the first segment.y1- is the first point of the first segment.z1- is the first point of the first segment.x2- is the second point of the first segment.y2- is the second point of the first segment.z2- is the second point of the first segment.x3- is the first point of the second segment.y3- is the first point of the second segment.z3- is the first point of the second segment.x4- is the second point of the second segment.y4- is the second point of the second segment.z4- is the second point of the second segment.enableThirdPoint- indicates if the intersection on the third point is computed.enableFourthPoint- indicates if the intersection on the fourth point is computed.intersectionPoint- are the coordinates of the intersection, if exist.- Returns:
trueif the two segments are intersecting; otherwisefalse
-
computeIntersectionTypeSegmentSegment
static int computeIntersectionTypeSegmentSegment(int x1, int y1, int z1, int x2, int y2, int z2, int x3, int y3, int z3, int x4, int y4, int z4, boolean enableThirdPoint, boolean enableFourthPoint, Point3D<?,?> intersectionPoint)Replies if two segments are intersecting pixel per pixel. This function does not determine if the segments' lines are intersecting because using the pixel-based test. This function uses the pixels of the segments that are computed according to a Bresenham line algorithm.- Parameters:
x1- is the first point of the first segment.y1- is the first point of the first segment.z1- is the first point of the first segment.x2- is the second point of the first segment.y2- is the second point of the first segment.z2- is the second point of the first segment.x3- is the first point of the second segment.y3- is the first point of the second segment.z3- is the first point of the second segment.x4- is the second point of the second segment.y4- is the second point of the second segment.z4- is the second point of the second segment.enableThirdPoint- indicates if the intersection on the third point is computed.enableFourthPoint- indicates if the intersection on the fourth point is computed.intersectionPoint- are the coordinates of the intersection, if exist.- Returns:
- an integer value; if
0the two segments are not intersecting;1if the two segments are intersecting and the segment 2 has pixels on both sides of the segment 1;2if the segments are intersecting and the segment 2 is only in one side of the segment 1.
-
equalsToShape
@Pure default boolean equalsToShape(IT shape)
Description copied from interface:Shape3DReplies this shape is equal to the given shape.- Specified by:
equalsToShapein interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
shape- the shape to compare to.- Returns:
trueif this shape is equal is equal to the given path.
-
clear
default void clear()
Description copied from interface:Shape3DReset this shape to be equivalent to an just-created instance of this shape type.
-
isEmpty
@Pure default boolean isEmpty()
Description copied from interface:Shape3DReplies if this shape is empty. The semantic associated to the state "empty" depends on the implemented shape. See the subclasses for details.- Specified by:
isEmptyin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Returns:
trueif the shape is empty;falseotherwise.
-
set
void set(int x1, int y1, int z1, int x2, int y2, int z2)Change the line.- Parameters:
x1- x coordinate of the first point.y1- y coordinate of the first point.z1- z coordinate of the first point.x2- x coordinate of the second point.y2- y coordinate of the second point.z2- z coordinate of the second point.
-
set
default void set(Point3D<?,?> firstPoint, Point3D<?,?> secondPoint)
Change the line.- Parameters:
firstPoint- the first point.secondPoint- the second point.
-
set
default void set(IT shape)
Description copied from interface:Shape3DSet this shape with the attributes of the given shape.- Specified by:
setin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
shape- the shape.
-
getX1
@Pure int getX1()
Replies the X of the first point.- Returns:
- the x of the first point.
-
getY1
@Pure int getY1()
Replies the Y of the first point.- Returns:
- the y of the first point.
-
getZ1
@Pure int getZ1()
Replies the Z of the first point.- Returns:
- the z of the first point.
-
getX2
@Pure int getX2()
Replies the X of the second point.- Returns:
- the x of the second point.
-
getY2
@Pure int getY2()
Replies the Y of the second point.- Returns:
- the y of the second point.
-
getZ2
@Pure int getZ2()
Replies the Z of the second point.- Returns:
- the z of the second point.
-
setX1
@Pure void setX1(int x)
Change the X of the first point.- Parameters:
x- the x of the first point.
-
setY1
@Pure void setY1(int y)
Change the Y of the first point.- Parameters:
y- the y of the first point.
-
setZ1
@Pure void setZ1(int z)
Change the Z of the first point.- Parameters:
z- the z of the first point.
-
setX2
@Pure void setX2(int x)
Change the X of the second point.- Parameters:
x- the x of the second point.
-
setY2
@Pure void setY2(int y)
Change the Y of the second point.- Parameters:
y- the y of the second point.
-
setZ2
@Pure void setZ2(int z)
Change the Z of the second point.- Parameters:
z- the z of the second point.
-
getP1
@Pure default P getP1()
Replies the first point.- Returns:
- the first point.
-
getP2
@Pure default P getP2()
Replies the second point.- Returns:
- the second point.
-
setP1
@Pure default void setP1(Point3D<?,?> point)
Change the first point.- Parameters:
point- the first point.
-
setP1
@Pure default void setP1(int x, int y, int z)Change the first point.- Parameters:
x- x coordinate of the first point.y- y coordinate of the first point.z- z coordinate of the first point.
-
setP2
@Pure default void setP2(Point3D<?,?> point)
Change the second point.- Parameters:
point- the second point.
-
setP2
@Pure default void setP2(int x, int y, int z)Change the second point.- Parameters:
x- x coordinate the second point.y- y coordinate the second point.z- z coordinate the second point.
-
toBoundingBox
@Pure default void toBoundingBox(B box)
Description copied from interface:Shape3DReplies the bounds of the shape.- Specified by:
toBoundingBoxin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
box- is set with the bounds of the shape.
-
getDistanceSquared
@Pure default double getDistanceSquared(Point3D<?,?> pt)
Description copied from interface:Shape3DReplies the squared value of the minimal distance from this shape to the given point.- Specified by:
getDistanceSquaredin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
pt- the point.- Returns:
- squared value of the minimal distance between this shape and the point.
-
getDistanceL1
@Pure default double getDistanceL1(Point3D<?,?> pt)
Description copied from interface:Shape3DComputes the L-1 (Manhattan) distance between this shape and point p1. The L-1 distance is equal to abs(x1-x2) + abs(y1-y2).- Specified by:
getDistanceL1in interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
pt- the point- Returns:
- the distance.
-
getDistanceLinf
@Pure default double getDistanceLinf(Point3D<?,?> pt)
Description copied from interface:Shape3DComputes the L-infinite distance between this shape and point p1. The L-infinite distance is equal to MAX[abs(x1-x2), abs(y1-y2), abs(z1-z2)].- Specified by:
getDistanceLinfin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
pt- the point.- Returns:
- the distance.
-
contains
@Pure default boolean contains(int x, int y, int z)Description copied from interface:Shape3aiReplies if the given point is inside this shape.- Specified by:
containsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
x- x coordinate of the point to test.y- y coordinate of the point to test.z- z coordinate of the point to test.- Returns:
trueif the given point is inside this shape, otherwisefalse.
-
contains
@Pure default boolean contains(RectangularPrism3ai<?,?,?,?,?,?> rectangularPrism)
Description copied from interface:Shape3aiReplies if the given rectangle is inside this shape.- Specified by:
containsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
rectangularPrism- the rectangle to test.- Returns:
trueif the given box is inside the shape.
-
getClosestPointTo
@Pure default P getClosestPointTo(Point3D<?,?> pt)
Description copied from interface:Shape3DReplies the point on the shape that is closest to the given point.- Specified by:
getClosestPointToin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
pt- the point.- Returns:
- the closest point on the shape; or the point itself if it is inside the shape.
-
getClosestPointTo
default P getClosestPointTo(Sphere3ai<?,?,?,?,?,?> circle)
Description copied from interface:Shape3aiReplies the closest point on this shape to the given rectangle.- Specified by:
getClosestPointToin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
circle- the circle.- Returns:
- the closest point on this shape to the given shape; or the point if the point is in this shape.
-
getClosestPointTo
default P getClosestPointTo(Segment3ai<?,?,?,?,?,?> segment)
Description copied from interface:Shape3aiReplies the closest point on this shape to the given rectangle.- Specified by:
getClosestPointToin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
segment- the segment.- Returns:
- the closest point on this shape to the given shape; or the point if the point is in this shape.
-
getClosestPointTo
default P getClosestPointTo(RectangularPrism3ai<?,?,?,?,?,?> rectangle)
Description copied from interface:Shape3aiReplies the closest point on this shape to the given rectangle.- Specified by:
getClosestPointToin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
rectangle- the rectangle.- Returns:
- the closest point on this shape to the given shape; or the point if the point is in this shape.
-
getClosestPointTo
default P getClosestPointTo(Path3ai<?,?,?,?,?,?> path)
Description copied from interface:Shape3aiReplies the closest point on this shape to the given rectangle.- Specified by:
getClosestPointToin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
path- the path.- Returns:
- the closest point on this shape to the given shape; or the point if the point is in this shape.
-
getFarthestPointTo
@Pure default P getFarthestPointTo(Point3D<?,?> pt)
Description copied from interface:Shape3DReplies the point on the shape that is farthest the given point.- Specified by:
getFarthestPointToin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
pt- the point.- Returns:
- the farthest point on the shape.
-
translate
default void translate(int dx, int dy, int dz)Description copied from interface:Shape3aiTranslate the shape.- Specified by:
translatein interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
dx- x translation.dy- y translation.dz- z translation.
-
getPathIterator
@Pure default PathIterator3ai<IE> getPathIterator(Transform3D transform)
Description copied from interface:Shape3DReplies the elements of the paths.- Specified by:
getPathIteratorin interfaceShape3D<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
transform- is the transformation to apply to the path.- Returns:
- the elements of the path.
-
getPointIterator
@Pure default Iterator<P> getPointIterator()
Replies an iterator on the points of the segment.The Bresenham line algorithm is an algorithm which determines which points in an n-dimensional raster should be plotted in order to form a close approximation to a straight line between two given points. It is commonly used to draw lines on a computer screen, as it uses only integer addition, subtraction and bit shifting, all of which are very cheap operations in standard computer architectures. It is one of the earliest algorithms developed in the field of computer graphics. A minor extension to the original algorithm also deals with drawing circles.
While algorithms such as Wu's algorithm are also frequently used in modern computer graphics because they can support antialiasing, the speed and simplicity of Bresenham's line algorithm mean that it is still important. The algorithm is used in hardware such as plotters and in the graphics chips of modern graphics cards. It can also be found in many software graphics libraries. Because the algorithm is very simple, it is often implemented in either the firmware or the hardware of modern graphics cards.
- Specified by:
getPointIteratorin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Returns:
- an iterator on the points along the Bresenham line.
-
transform
default void transform(Transform3D transform)
Transform the current segment. This function changes the current segment.- Parameters:
transform- is the affine transformation to apply.- See Also:
Shape3ai.createTransformedShape(Transform3D)
-
clipToRectangle
default boolean clipToRectangle(int rxmin, int rymin, int rzmin, int rxmax, int rymax, int rzmax)Clip the segment against the clipping rectangle according to the Cohen-Sutherland algorithm.- Parameters:
rxmin- is the min of the coordinates of the rectangle.rymin- is the min of the coordinates of the rectangle.rzmin- is the min of the coordinates of the rectangle.rxmax- is the max of the coordinates of the rectangle.rymax- is the max of the coordinates of the rectangle.rzmax- is the max of the coordinates of the rectangle.- Returns:
trueif the segment has an intersection with the rectangle and the segment was clipped;falseif the segment does not intersect the rectangle.
-
intersects
@Pure default boolean intersects(RectangularPrism3ai<?,?,?,?,?,?> rectangularPrism)
Description copied from interface:Shape3aiReplies if this shape is intersecting the given rectangular prism.- Specified by:
intersectsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
rectangularPrism- the rectangular prism.- Returns:
trueif this shape is intersecting the given shape;falseif there is no intersection.
-
intersects
@Pure default boolean intersects(Sphere3ai<?,?,?,?,?,?> sphere)
Description copied from interface:Shape3aiReplies if this shape is intersecting the given sphere.- Specified by:
intersectsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
sphere- the sphere- Returns:
trueif this shape is intersecting the given shape;falseif there is no intersection.
-
intersects
@Pure default boolean intersects(Segment3ai<?,?,?,?,?,?> segment)
Description copied from interface:Shape3aiReplies if this shape is intersecting the given segment.- Specified by:
intersectsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
segment- the segment- Returns:
trueif this shape is intersecting the given shape;falseif there is no intersection.
-
intersects
@Pure default boolean intersects(PathIterator3ai<?> iterator)
Description copied from interface:Shape3aiReplies if this shape is intersecting the path described by the given iterator.- Specified by:
intersectsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
iterator- the path Iterator- Returns:
trueif this shape is intersecting the given shape;falseif there is no intersection.
-
intersects
@Pure default boolean intersects(MultiShape3ai<?,?,?,?,?,?,?> multishape)
Description copied from interface:Shape3aiReplies if this shape is intersecting the given multishape.- Specified by:
intersectsin interfaceShape3ai<ST extends Shape3ai<?,?,IE,P,V,B>,IT extends Segment3ai<?,?,IE,P,V,B>,IE extends PathElement3ai,P extends Point3D<? super P,? super V>,V extends Vector3D<? super V,? super P>,B extends RectangularPrism3ai<?,?,IE,P,V,B>>- Parameters:
multishape- the ùmultishape- Returns:
trueif this shape is intersecting the given shape;falseif there is no intersection.
-
-



