Class Polygon3d

java.lang.Object
org.djutils.draw.line.PolyLine3d
org.djutils.draw.line.Polygon3d
All Implemented Interfaces:
Serializable, Iterable<Point3d>, Drawable<Point3d>, Drawable3d, PolyLine<PolyLine3d,Point3d,Ray3d,DirectedPoint3d,LineSegment3d>, Project<Point3d>

public class Polygon3d extends PolyLine3d
Closed PolyLine3d. The actual closing point (which is the same as the starting point) is NOT included in the super PolyLine3d. The constructors automatically remove the last point if it is a at the same location as the first point.

Copyright (c) 2020-2025 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUTILS License.

Author:
Alexander Verbraeck, Peter Knoppers, Wouter Schakel
See Also:
  • Constructor Details

    • Polygon3d

      public Polygon3d(double[] x, double[] y, double[] z)
      Construct a new Polygon3d.
      Parameters:
      x - the x coordinates of the points
      y - the y coordinates of the points
      z - the z coordinates of the points
      Throws:
      IllegalArgumentException - when any two successive points are equal, or when there are too few points
    • Polygon3d

      public Polygon3d(double epsilon, double[] x, double[] y, double[] z)
      Construct a new Polygon3d.
      Parameters:
      epsilon - minimum distance between points to be considered different (these will not be filtered out)
      x - the x coordinates of the points
      y - the y coordinates of the points
      z - the z coordinates of the points
      Throws:
      IllegalArgumentException - when any two successive points are equal, or when there are too few points
    • Polygon3d

      public Polygon3d(Point3d[] points)
      Construct a new Polygon3d.
      Parameters:
      points - array of Point3d objects.
      Throws:
      NullPointerException - when points is null
      IllegalArgumentException - when points is too short, or contains successive duplicate points
    • Polygon3d

      public Polygon3d(double epsilon, Point3d[] points)
      Construct a new Polygon3d.
      Parameters:
      epsilon - minimum distance between points to be considered different (these will not be filtered out)
      points - array of Point3d objects.
      Throws:
      NullPointerException - when points is null
      IllegalArgumentException - when points is too short, or contains successive duplicate points
    • Polygon3d

      public Polygon3d(Point3d point1, Point3d point2, Point3d... otherPoints)
      Construct a new Polygon3d.
      Parameters:
      point1 - the first point of the new Polygon3d
      point2 - the second point of the new Polygon3d
      otherPoints - all remaining points of the new Polygon3d (may be null)
      Throws:
      NullPointerException - when point1 or point2 is null, or contains a null value
      IllegalArgumentException - when point1 is equal to the last point of otherPoints, or any two successive points are equal
    • Polygon3d

      public Polygon3d(double epsilon, Point3d point1, Point3d point2, Point3d... otherPoints)
      Construct a new Polygon3d.
      Parameters:
      epsilon - minimum distance between points to be considered different (these will not be filtered out)
      point1 - the first point of the new Polygon3d
      point2 - the second point of the new Polygon3d
      otherPoints - all remaining points of the new Polygon3d (may be null)
      Throws:
      NullPointerException - when point1 or point2 is null, or contains a null value
      IllegalArgumentException - when point1 is equal to the last point of otherPoints, or any two successive points are equal
    • Polygon3d

      public Polygon3d(List<Point3d> points)
      Construct a new Polygon3d from a list of Point3d objects.
      Parameters:
      points - the list of points
      Throws:
      NullPointerException - when points is null
      IllegalArgumentException - when points is too short, or the last two points are at the same location
    • Polygon3d

      public Polygon3d(double epsilon, List<Point3d> points)
      Construct a new Polygon3d from a list of Point3d objects.
      Parameters:
      epsilon - minimum distance between points to be considered different (these will not be filtered out)
      points - the list of points
      Throws:
      NullPointerException - when points is null
      IllegalArgumentException - when points is too short, or the last two points are at the same location
    • Polygon3d

      public Polygon3d(Iterator<Point3d> iterator)
      Construct a new Polygon3d from an iterator that yields Point3d.
      Parameters:
      iterator - the iterator
    • Polygon3d

      public Polygon3d(double epsilon, Iterator<Point3d> iterator)
      Construct a new Polygon3d from an iterator that yields Point3d.
      Parameters:
      epsilon - minimum distance between points to be considered different (these will not be filtered out)
      iterator - the iterator
    • Polygon3d

      public Polygon3d(Polygon3d polygon)
      Construct a new Polygon3d from an existing one. This constructor is primarily intended for use in extending classes.
      Parameters:
      polygon - the existing Polygon3d
      Throws:
      NullPointerException - when polygon is null
  • Method Details

    • fixClosingPoint

      static double[] fixClosingPoint(double[] a, double[] b, double[] c)
      Ensure that the last elements in three arrays are is not equal to the first. Remove the last element if necessary.
      Parameters:
      a - the a array
      b - the b array
      c - the c array
      Returns:
      the a array (possibly a copy with the last element removed)
    • getLength

      public double getLength()
      Description copied from interface: PolyLine
      Return the length of this line. This is not the number of points; it is the sum of the lengths of the segments.
      Specified by:
      getLength in interface PolyLine<PolyLine3d,Point3d,Ray3d,DirectedPoint3d,LineSegment3d>
      Overrides:
      getLength in class PolyLine3d
      Returns:
      the length of this line
    • getSegment

      public LineSegment3d getSegment(int index)
      Description copied from interface: PolyLine
      Extract one LineSegment of this PolyLine, or Polygon.
      Specified by:
      getSegment in interface PolyLine<PolyLine3d,Point3d,Ray3d,DirectedPoint3d,LineSegment3d>
      Overrides:
      getSegment in class PolyLine3d
      Parameters:
      index - the rank number of the segment; must be in range 0..Size() - 2 for PolyLine, or 0.. Size() - 1 for Polygon.
      Returns:
      the LineSegment that connects point index to point index + 1
    • project

      public Polygon2d project()
      Description copied from interface: Drawable3d
      Project the object onto the z=0 plane.
      Specified by:
      project in interface Drawable3d
      Overrides:
      project in class PolyLine3d
      Returns:
      the projected object
    • reverse

      public Polygon3d reverse()
      Description copied from interface: PolyLine
      Construct a new PolyLine with all points of this PolyLine in reverse order.
      Returns:
      the new PolyLine
    • toString

      public final String toString()
      Description copied from interface: Drawable
      Produce a string describing the Drawable using default conversion for the (double) coordinate values. Regrettably, it is not allowed to provide a default implementation here.
      Specified by:
      toString in interface Drawable<Point3d>
      Overrides:
      toString in class PolyLine3d
      Returns:
      a string describing the Drawable
    • toString

      public String toString(String doubleFormat, boolean doNotIncludeClassName)
      Description copied from interface: Drawable
      Produce a String describing the Drawable.
      Specified by:
      toString in interface Drawable<Point3d>
      Overrides:
      toString in class PolyLine3d
      Parameters:
      doubleFormat - a format string (something like "%6.3f") which will be used to render every coordinate value)
      doNotIncludeClassName - if true; the output of toString is not prefixed by the class name. This is useful for concatenating the textual representation of lots of Drawables (e.g. an array, or a List).
      Returns:
      textual representation of the Drawable