public class VerticalDecomposition.Trapezoid
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private VerticalDecomposition.Line |
botSegment
The segment that bound the trapezoid from the bottom.
|
private java.util.List<java.awt.geom.Line2D> |
decompLines
The decomposition lines of the trapezoid.
|
private java.util.List<java.awt.geom.Point2D> |
leftPoints
The points that bound the trapezoid from the left.
|
private java.util.List<VerticalDecomposition.Trapezoid> |
neighbours
The neighbouring trapezoids of the trapezoid.
|
private java.util.List<java.awt.geom.Point2D> |
rightPoints
The points that bound the trapezoid from the right.
|
private VerticalDecomposition.Line |
topSegment
The segment that bound the trapezoid from the top.
|
private VerticalDecomposition.DecompVertex |
vertex
The vertex that this trapezoid is linked to.
|
Constructor and Description |
---|
Trapezoid(java.util.List<java.awt.geom.Point2D> left,
java.util.List<java.awt.geom.Point2D> right,
VerticalDecomposition.Line botSegment,
VerticalDecomposition.Line topSegment)
Constructs a trapezoid given lists of left and right bounding points, and the top and bottom bounding segments.
|
Trapezoid(java.util.List<java.awt.geom.Point2D> left,
java.awt.geom.Point2D right,
VerticalDecomposition.Line botSegment,
VerticalDecomposition.Line topSegment)
Constructs a trapezoid given a list of left bounding points and a right bounding point, and the top and bottom bounding segments.
|
Trapezoid(java.awt.geom.Point2D left,
java.util.List<java.awt.geom.Point2D> right,
VerticalDecomposition.Line botSegment,
VerticalDecomposition.Line topSegment)
Constructs a trapezoid given a left bounding point and a list of right bounding points, and the top and bottom bounding segments.
|
Trapezoid(java.awt.geom.Point2D left,
java.awt.geom.Point2D right,
VerticalDecomposition.Line botSegment,
VerticalDecomposition.Line topSegment)
Constructs a trapezoid given a left and a right bounding point, and the top and bottom bounding segments.
|
Modifier and Type | Method and Description |
---|---|
private void |
addLeftPoint(java.awt.geom.Point2D point)
Adds a left bounding point to the trapezoid.
|
private void |
addNeighbour(VerticalDecomposition.Trapezoid neighbour)
Adds a neighbour to the list of neighbours.
|
private void |
addRightPoint(java.awt.geom.Point2D point)
Adds a right bounding point to the trapezoid.
|
void |
computeDecompLines()
Computes and sets the decomposition lines related to this trapezoid.
|
private int |
computeDepth(VerticalDecomposition.DecompVertex root)
Computes the longest path from the given search structure vertex to
the vertex associated with this trapezoid.
|
void |
freeNeighbours()
Removes this trapezoid from the neighbour lists
of all neighbours and clears the neighbour list
of this trapezoid.
|
java.awt.geom.Point2D |
getCentroid()
Returns the centroid of the trapezoid.
|
java.util.List<java.awt.geom.Line2D> |
getDecompLines()
Gets the vertical lines of this trapezoid.
|
VerticalDecomposition.DecompVertex |
getDecompVertex()
Gets the decomposition vertex that this trapezoid is linked to.
|
int |
getDepth()
Computes the maximum depth of this trapezoid in the search structure.
|
java.util.List<java.awt.geom.Point2D> |
getEndPoints()
Returns the points of the trapezoid in counterclockwise order.
|
java.awt.geom.Line2D |
getLeftDecompLine()
Gets the left vertical line of this trapezoid.
|
java.util.List<VerticalDecomposition.Trapezoid> |
getNeighbours()
Getter for the neighbours of the trapezoid.
|
ConvexObject |
getObject()
Returns the convex object that contains this trapezoid.
|
java.awt.geom.Line2D |
getRightDecompLine()
Gets the right vertical line of this trapezoid.
|
double |
getXLeft()
Getter for the X coordinate of the left wall of the trapezoid.
|
double |
getXRight()
Getter for the X coordinate of the right wall of the trapezoid.
|
boolean |
intersectsSegment(java.awt.geom.Line2D segment)
Checks whether a given line segment intersects with this trapezoid.
|
boolean |
pointInside(double x,
double y)
Checks whether a point given by its coordinates is strictly inside a trapezoid.
|
boolean |
pointInside(java.awt.geom.Point2D p)
Checks whether a given point is strictly inside a trapezoid.
|
void |
removeNeighbour(VerticalDecomposition.Trapezoid neighbour)
Removes a neighbour from the list of neighbours.
|
void |
sanitizeNeighbours()
Removes undesired neighbourhoods of trapezoids.
|
void |
setDecompVertex(VerticalDecomposition.DecompVertex vertex)
Links the trapezoid to a Decomposition vertex.
|
java.awt.Shape |
toShape()
Computes the shape for this trapezoid.
|
private VerticalDecomposition.Line topSegment
private VerticalDecomposition.Line botSegment
private java.util.List<java.awt.geom.Point2D> leftPoints
private java.util.List<java.awt.geom.Point2D> rightPoints
private java.util.List<VerticalDecomposition.Trapezoid> neighbours
private VerticalDecomposition.DecompVertex vertex
private java.util.List<java.awt.geom.Line2D> decompLines
public Trapezoid(java.awt.geom.Point2D left, java.awt.geom.Point2D right, VerticalDecomposition.Line botSegment, VerticalDecomposition.Line topSegment)
left
- The left bounding point of the trapezoid.right
- The right bounding point of the trapezoid.botSegment
- The bottom bounding segment of the trapezoid.topSegment
- The top bounding segment of the trapezoid.public Trapezoid(java.util.List<java.awt.geom.Point2D> left, java.awt.geom.Point2D right, VerticalDecomposition.Line botSegment, VerticalDecomposition.Line topSegment)
left
- The left bounding point of the trapezoid.right
- The right bounding point of the trapezoid.botSegment
- The bottom bounding segment of the trapezoid.topSegment
- The top bounding segment of the trapezoid.public Trapezoid(java.awt.geom.Point2D left, java.util.List<java.awt.geom.Point2D> right, VerticalDecomposition.Line botSegment, VerticalDecomposition.Line topSegment)
left
- The left bounding point of the trapezoid.right
- The right bounding point of the trapezoid.botSegment
- The bottom bounding segment of the trapezoid.topSegment
- The top bounding segment of the trapezoid.public Trapezoid(java.util.List<java.awt.geom.Point2D> left, java.util.List<java.awt.geom.Point2D> right, VerticalDecomposition.Line botSegment, VerticalDecomposition.Line topSegment)
left
- The left bounding point of the trapezoid.right
- The right bounding point of the trapezoid.botSegment
- The bottom bounding segment of the trapezoid.topSegment
- The top bounding segment of the trapezoid.public int getDepth()
private int computeDepth(VerticalDecomposition.DecompVertex root)
root
- The vertex to treat as the search structure root.public double getXLeft()
public double getXRight()
public java.util.List<VerticalDecomposition.Trapezoid> getNeighbours()
private void addNeighbour(VerticalDecomposition.Trapezoid neighbour)
neighbour
- The neighbour to be added to the list.public void removeNeighbour(VerticalDecomposition.Trapezoid neighbour)
neighbour
- The neighbour to be removed.public void freeNeighbours()
public void sanitizeNeighbours()
This includes:
public java.util.List<java.awt.geom.Line2D> getDecompLines()
public java.awt.geom.Line2D getLeftDecompLine()
public java.awt.geom.Line2D getRightDecompLine()
public void computeDecompLines()
public VerticalDecomposition.DecompVertex getDecompVertex()
public void setDecompVertex(VerticalDecomposition.DecompVertex vertex)
vertex
- The Decomposition vertex to link to.public boolean intersectsSegment(java.awt.geom.Line2D segment)
segment
- The line segment to check intersection with.public boolean pointInside(double x, double y)
x
- The x coordinate of the point to check.y
- The y coordinate of the point to check.public boolean pointInside(java.awt.geom.Point2D p)
p
- The point to check.private void addLeftPoint(java.awt.geom.Point2D point)
point
- The new left bounding point.private void addRightPoint(java.awt.geom.Point2D point)
point
- The new right bounding point.public java.awt.geom.Point2D getCentroid()
public java.util.List<java.awt.geom.Point2D> getEndPoints()
public ConvexObject getObject()
null
if no convex object contains it.null
if it is not part of any convex object.public java.awt.Shape toShape()