Module  java.desktop
软件包  java.awt.geom

Class Line2D

  • All Implemented Interfaces:
    ShapeCloneable
    已知直接子类:
    Line2D.DoubleLine2D.Float


    public abstract class Line2D
    extends Object
    implements Shape, Cloneable
    Line2D表示(x,y)坐标空间中的线段。

    此类只是存储2D线段的所有对象的抽象超类。 坐标的实际存储表示留给子类。

    从以下版本开始:
    1.2
    • Nested Class Summary

      Nested Classes  
      Modifier and Type Class 描述
      static class  Line2D.Double
      用双坐标指定的线段。
      static class  Line2D.Float
      用浮点坐标指定的线段。
    • 构造方法摘要

      构造方法  
      Modifier Constructor 描述
      protected Line2D​()
      这是一个无法直接实例化的抽象类。
    • 方法摘要

      所有方法  静态方法  接口方法  抽象方法  具体的方法 
      Modifier and Type 方法 描述
      Object clone​()
      创建与此对象相同类的新对象。
      boolean contains​(double x, double y)
      测试指定的坐标是否在该 Line2D的边界内。
      boolean contains​(double x, double y, double w, double h)
      测试这个 Line2D的内部 Line2D完全包含指定的一组直角坐标。
      boolean contains​(Point2D p)
      测试一个给定的 Point2D是否在这个 Line2D的边界内。
      boolean contains​(Rectangle2D r)
      测试这个 Line2D的内部 Line2D完全包含指定的 Rectangle2D
      Rectangle getBounds​()
      返回一个整数Rectangle完全包围Shape
      abstract Point2D getP1​()
      返回开始 Point2D如此 Line2D
      abstract Point2D getP2​()
      返回结束 Point2D如此 Line2D
      PathIterator getPathIterator​(AffineTransform at)
      返回定义此 Line2D边界的迭代对象。
      PathIterator getPathIterator​(AffineTransform at, double flatness)
      返回一个迭代对象,该对象定义了此扁平化的边界 Line2D
      abstract double getX1​()
      以双精度返回起始点的X坐标。
      abstract double getX2​()
      X-
      abstract double getY1​()
      新新新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200
      abstract double getY2​()
      以双精度返回终点的Y坐标。
      boolean intersects​(double x, double y, double w, double h)
      测试 Shape的内部是否与指定矩形区域的内部相交。
      boolean intersects​(Rectangle2D r)
      测试 Shape的内部是否与指定的内部相交 Rectangle2D
      boolean intersectsLine​(double x1, double y1, double x2, double y2)
      测试从 (x1,y1)(x2,y2)线段 (x2,y2)与此线段相交。
      boolean intersectsLine​(Line2D l)
      测试指定的线段是否与此线段相交。
      static boolean linesIntersect​(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
      测试,如果线段从 (x1,y1)(x2,y2)相交的线段从 (x3,y3)(x4,y4)
      double ptLineDist​(double px, double py)
      返回从点到此行的距离。
      static double ptLineDist​(double x1, double y1, double x2, double y2, double px, double py)
      返回从点到行的距离。
      double ptLineDist​(Point2D pt)
      返回从 Point2D到此行的距离。
      double ptLineDistSq​(double px, double py)
      返回从点到此行的距离的平方。
      static double ptLineDistSq​(double x1, double y1, double x2, double y2, double px, double py)
      返回从点到行的距离的平方。
      double ptLineDistSq​(Point2D pt)
      返回从指定的 Point2D到此行的距离的平方。
      double ptSegDist​(double px, double py)
      返回从点到此线段的距离。
      static double ptSegDist​(double x1, double y1, double x2, double y2, double px, double py)
      返回从点到线段的距离。
      double ptSegDist​(Point2D pt)
      返回从 Point2D到此线段的距离。
      double ptSegDistSq​(double px, double py)
      返回从点到该线段的距离的平方。
      static double ptSegDistSq​(double x1, double y1, double x2, double y2, double px, double py)
      返回从点到线段的距离的平方。
      double ptSegDistSq​(Point2D pt)
      返回从 Point2D到此线段的距离的平方。
      int relativeCCW​(double px, double py)
      返回指定点 (px,py)相对于该线段所在的位置的 (px,py)
      static int relativeCCW​(double x1, double y1, double x2, double y2, double px, double py)
      返回指定点 (px,py)相对于从 (x1,y1)(x2,y2)线段的 (x1,y1)(x2,y2)
      int relativeCCW​(Point2D p)
      返回相对于该线段指定的 Point2D位置的指示符。
      abstract void setLine​(double x1, double y1, double x2, double y2)
      将此 Line2D的终点的位置设置为指定的双坐标。
      void setLine​(Line2D l)
      将此 Line2D的终点位置设置为与指定的 Line2D终点相同。
      void setLine​(Point2D p1, Point2D p2)
      将此 Line2D的终点位置设置为指定的 Point2D坐标。
    • 构造方法详细信息

      • Line2D

        protected Line2D​()
        这是一个无法直接实例化的抽象类。 类型特定的实现子类可用于实例化,并提供了许多格式,用于存储满足以下各种附件方法所必需的信息。
        从以下版本开始:
        1.2
        另请参见:
        Line2D.FloatLine2D.Double
    • 方法详细信息

      • getX1

        public abstract double getX1​()
        200新新新新200新新200新200新新200新200新新200新新200新新200新新200新新200新新新200新新200
        结果
        Line2D对象的起始点的X坐标。
        从以下版本开始:
        1.2
      • getY1

        public abstract double getY1​()
        新新新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200
        结果
        这个 Line2D对象的起始点的Y坐标。
        从以下版本开始:
        1.2
      • getP1

        public abstract Point2D getP1​()
        返回 Point2D的起始 Line2D
        结果
        Point2D的起始 Line2D
        从以下版本开始:
        1.2
      • getX2

        public abstract double getX2​()
        X-
        结果
        Line2D对象的终点的X坐标。
        从以下版本开始:
        1.2
      • getY2

        public abstract double getY2​()
        以双精度返回终点的Y坐标。
        结果
        Line2D对象的终点的Y坐标。
        从以下版本开始:
        1.2
      • getP2

        public abstract Point2D getP2​()
        返回结束 Point2D如此 Line2D
        结果
        Point2D的这个 Line2D
        从以下版本开始:
        1.2
      • setLine

        public abstract void setLine​(double x1,
                                     double y1,
                                     double x2,
                                     double y2)
        将此 Line2D的终点位置设置为指定的双坐标。
        参数
        x1 - x1的X坐标
        y1 - y1的Y坐标
        x2 - 终点的X坐标
        y2 - 终点的Y坐标
        从以下版本开始:
        1.2
      • setLine

        public void setLine​(Point2D p1,
                            Point2D p2)
        将此 Line2D的终点位置设置为指定的 Point2D坐标。
        参数
        p1 - 线段的启动 Point2D
        p2 - 线段的末端 Point2D
        从以下版本开始:
        1.2
      • setLine

        public void setLine​(Line2D l)
        将此 Line2D的终点位置设置为与指定的 Line2D终点相同。
        参数
        l - 指定的 Line2D
        从以下版本开始:
        1.2
      • relativeCCW

        public static int relativeCCW​(double x1,
                                      double y1,
                                      double x2,
                                      double y2,
                                      double px,
                                      double py)
        返回指定点(px,py)相对于从(x1,y1)(x2,y2)线段的(x1,y1)(x2,y2) 返回值可以是1,-1或0,并指示指定的行必须围绕其第一个终点(x1,y1)枢转,以指向指定点(px,py)

        返回值为1表示线段必须朝向正Y轴的正X轴方向转动。 在Java 2D使用的默认坐标系中,该方向是逆时针方向。

        返回值为-1表示线段必须朝向正Y轴取正X轴的方向转动。 在默认坐标系中,该方向为顺时针方向。

        返回值为0表示该点正好位于线段上。 请注意,指标值为0是罕见的,因为浮点舍入问题而不能用于确定共线性。

        如果该点共线与线段,但终点之间没有,则该值将是-1如果点“超越(x1,y1) ”或1如果点“超越(x2,y2) ”。

        参数
        x1 - 指定线段起始点的X坐标
        y1 - 指定线段起始点的Y坐标
        x2 - 指定线段终点的X坐标
        y2 - 指定线段终点的Y坐标
        px - 要与指定线段进行比较的指定点的X坐标
        py - 要与指定线段进行比较的指定点的Y坐标
        结果
        指示相对于由前两个指定坐标形成的线段的第三指定坐标的位置的整数。
        从以下版本开始:
        1.2
      • linesIntersect

        public static boolean linesIntersect​(double x1,
                                             double y1,
                                             double x2,
                                             double y2,
                                             double x3,
                                             double y3,
                                             double x4,
                                             double y4)
        测试,如果线段从 (x1,y1)(x2,y2)相交的线段从 (x3,y3)(x4,y4)
        参数
        x1 - 第一个指定线段起始点的X坐标
        y1 - 第一个指定线段起始点的Y坐标
        x2 - 第一个指定线段的终点的X坐标
        y2 - 第一个指定线段的终点的Y坐标
        x3 - 第二个指定线段起始点的X坐标
        y3 - 第二个指定线段起始点的Y坐标
        x4 - 第二个指定线段的终点的X坐标
        y4 - 第二个指定线段的终点的Y坐标
        结果
        true如果第一个指定的线段和第二个指定的线段相交; 否则为false
        从以下版本开始:
        1.2
      • intersectsLine

        public boolean intersectsLine​(double x1,
                                      double y1,
                                      double x2,
                                      double y2)
        测试从 (x1,y1)(x2,y2)线段 (x2,y2)与此线段相交。
        参数
        x1 - 指定线段起始点的X坐标
        y1 - 指定线段起始点的Y坐标
        x2 - 指定线段终点的X坐标
        y2 - 指定线段终点的Y坐标
        结果
        true如果这个线段和指定的线段相交; 否则为false
        从以下版本开始:
        1.2
      • intersectsLine

        public boolean intersectsLine​(Line2D l)
        测试指定的线段是否与此线段相交。
        参数
        l - 指定的 Line2D
        结果
        true如果这个线段和指定的线段相交; 否则为false
        从以下版本开始:
        1.2
      • ptSegDistSq

        public static double ptSegDistSq​(double x1,
                                         double y1,
                                         double x2,
                                         double y2,
                                         double px,
                                         double py)
        返回从点到线段的距离的平方。 测量的距离是指定点与指定终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        x1 - 指定线段起始点的X坐标
        y1 - 指定线段起始点的Y坐标
        x2 - 指定线段终点的X坐标
        y2 - 指定线段终点的Y坐标
        px - 相对于指定线段测量的指定点的X坐标
        py - 相对于指定线段测量的指定点的Y坐标
        结果
        一个双指数值,即从指定点到指定线段的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDistSq(double, double, double, double, double, double)
      • ptSegDist

        public static double ptSegDist​(double x1,
                                       double y1,
                                       double x2,
                                       double y2,
                                       double px,
                                       double py)
        返回从点到线段的距离。 测量的距离是指定点与指定终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        x1 - 指定线段起始点的X坐标
        y1 - 指定线段起始点的Y坐标
        x2 - 指定线段终点的X坐标
        y2 - 指定线段终点的Y坐标
        px - 相对于指定线段测量的指定点的X坐标
        py - 根据指定的线段测量指定点的Y坐标
        结果
        一个双重值,即从指定点到指定线段的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDist(double, double, double, double, double, double)
      • ptSegDistSq

        public double ptSegDistSq​(double px,
                                  double py)
        返回从点到该线段的距离的平方。 测量的距离是指定点与当前行终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        px - 针对该线段测量的指定点的X坐标
        py - 针对该线段测量的指定点的Y坐标
        结果
        一个双指数值,即从指定点到当前线段的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDistSq(double, double)
      • ptSegDistSq

        public double ptSegDistSq​(Point2D pt)
        返回从Point2D到该线段的距离的平方。 测量的距离是指定点与当前行终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        pt - 根据该线段测量指定的 Point2D
        结果
        一个双重值,即从指定的 Point2D到当前线段的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDistSq(Point2D)
      • ptSegDist

        public double ptSegDist​(double px,
                                double py)
        返回从点到此线段的距离。 测量的距离是指定点与当前行终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        px - 针对该线段测量的指定点的X坐标
        py - 针对该线段测量的指定点的Y坐标
        结果
        一个双重值,即从指定点到当前线段的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDist(double, double)
      • ptSegDist

        public double ptSegDist​(Point2D pt)
        返回从Point2D到此线段的距离。 测量的距离是指定点与当前行终点之间最近点之间的距离。 如果指定的点与终点之间的线段相交,则此方法返回0.0。
        参数
        pt - 根据该线段测量指定的 Point2D
        结果
        一个双重值,即从指定的 Point2D到当前线段的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDist(Point2D)
      • ptLineDistSq

        public static double ptLineDistSq​(double x1,
                                          double y1,
                                          double x2,
                                          double y2,
                                          double px,
                                          double py)
        返回从点到行的距离的平方。 测量的距离是指定点与由指定坐标定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        x1 - 指定行的起始点的X坐标
        y1 - 指定行的起始点的Y坐标
        x2 - 指定行终点的X坐标
        y2 - 指定行终点的Y坐标
        px - 要针对指定线测量的指定点的X坐标
        py - 根据指定线测量的指定点的Y坐标
        结果
        一个双重值,即从指定点到指定行的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDistSq(double, double, double, double, double, double)
      • ptLineDist

        public static double ptLineDist​(double x1,
                                        double y1,
                                        double x2,
                                        double y2,
                                        double px,
                                        double py)
        返回从点到行的距离。 测量的距离是指定点与由指定坐标定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        x1 - 指定行的起始点的X坐标
        y1 - 指定行起始点的Y坐标
        x2 - 指定行终点的X坐标
        y2 - 指定行终点的Y坐标
        px - 根据指定线测量的指定点的X坐标
        py - 指定点的Y坐标是根据指定的线进行测量
        结果
        一个双重值,即从指定点到指定行的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDist(double, double, double, double, double, double)
      • ptLineDistSq

        public double ptLineDistSq​(double px,
                                   double py)
        返回从点到此行的距离的平方。 测量的距离是指定点与由该Line2D定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        px - 针对该行测量的指定点的X坐标
        py - 针对该行测量的指定点的Y坐标
        结果
        一个双重值,即从指定点到当前行的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDistSq(double, double)
      • ptLineDistSq

        public double ptLineDistSq​(Point2D pt)
        返回从指定的Point2D到该行的距离的平方。 测量的距离是指定点与由该Line2D定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        pt - 根据该行测量指定的 Point2D
        结果
        一个双重值,即从指定的 Point2D到当前行的距离的平方。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDistSq(Point2D)
      • ptLineDist

        public double ptLineDist​(double px,
                                 double py)
        返回从点到此行的距离。 测量的距离是指定点与由该Line2D定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        px - 针对该行测量的指定点的X坐标
        py - 针对该行测量的指定点的Y坐标
        结果
        一个双重值,即从指定点到当前行的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDist(double, double)
      • ptLineDist

        public double ptLineDist​(Point2D pt)
        返回从Point2D到此行的距离。 测量的距离是指定点与由该Line2D定义的无限延伸线之间的最近点之间的距离。 如果指定的点与行相交,则此方法返回0.0。
        参数
        pt - 正在测量指定的 Point2D
        结果
        一个双重值,即从指定的 Point2D到当前行的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDist(Point2D)
      • contains

        public boolean contains​(double x,
                                double y)
        测试指定的坐标是否在该Line2D的边界内。 这种方法是实现Shape接口所必需的,但在Line2D对象的情况下,它始终返回false因为一行不包含区域。
        Specified by:
        contains在接口 Shape
        参数
        x - 要测试的指定点的X坐标
        y - 要测试的指定点的Y坐标
        结果
        false因为一个 Line2D包含区域。
        从以下版本开始:
        1.2
      • contains

        public boolean contains​(Point2D p)
        测试一个给定的Point2D是否在这个Line2D的边界内。 这种方法是实现Shape接口所必需的,但在Line2D对象的情况下,它总是返回false因为一行不包含区域。
        Specified by:
        contains在接口 Shape
        参数
        p - 要测试的指定的 Point2D
        结果
        false因为 Line2D包含区域。
        从以下版本开始:
        1.2
      • intersects

        public boolean intersects​(double x,
                                  double y,
                                  double w,
                                  double h)
        测试Shape的内部是否与指定矩形区域的内部相交。 矩形区域被认为是交叉的Shape如果任何点被包含在双方的内部Shape和指定的矩形区域。

        Shape.intersects()方法允许Shape实现保守返回true当:

        • 矩形区域与Shape相交的概率很高,但是
        • 准确地确定这个交叉点的计算是非常昂贵的。
        这意味着对于Shapes这个方法可能会返回true即使矩形区域不与Shape相交。 Area类比大多数Shape对象执行几何交集的更精确的计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        intersects接口 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果Shape的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行; 否则为false
        从以下版本开始:
        1.2
        另请参见:
        Area
      • intersects

        public boolean intersects​(Rectangle2D r)
        测试Shape的内部是否与指定的内部相交Rectangle2D Shape.intersects()方法允许Shape实现保守返回true时:
        • Rectangle2DShape相交的概率很高,但是
        • 准确地确定这个交叉点的计算是非常昂贵的。
        这意味着对于一些Shapes这个方法可能会返回true即使Rectangle2D不与Shape相交。 Area类比大多数Shape对象执行几何交集的更精确的计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        intersects在接口 Shape
        参数
        r - 指定的 Rectangle2D
        结果
        true如果Shape的内部和指定的Rectangle2D的内部相交,或者很可能相交,并且交叉点计算将太昂贵,不能执行; false否则。
        从以下版本开始:
        1.2
        另请参见:
        Shape.intersects(double, double, double, double)
      • contains

        public boolean contains​(double x,
                                double y,
                                double w,
                                double h)
        测试这个Line2D的内部是否包含指定的一组直角坐标。 这种方法是实现Shape接口所必需的,但在Line2D对象的情况下,它总是返回false,因为一行不包含区域。
        Specified by:
        contains接口 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        false因为一个 Line2D包含区域。
        从以下版本开始:
        1.2
        另请参见:
        AreaShape.intersects(double, double, double, double)
      • contains

        public boolean contains​(Rectangle2D r)
        测试这个Line2D的内部Line2D全部包含指定的Rectangle2D 这种方法是实现Shape接口所必需的,但在Line2D对象的情况下,它总是返回false因为一行不包含区域。
        Specified by:
        contains在接口 Shape
        参数
        r - 要测试的指定 Rectangle2D
        结果
        false因为一个 Line2D包含区域。
        从以下版本开始:
        1.2
        另请参见:
        Shape.contains(double, double, double, double)
      • getBounds

        public Rectangle getBounds​()
        返回一个整数Rectangle完全包围Shape 请注意,不保证返回的Rectangle是封闭的最小边界框Shape ,只表示Shape完全在指定的范围内Rectangle 如果Shape溢出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包含Shape getBounds2D方法通常返回更严格的边界框,因为它在表示方面具有更大的灵活性。

        请注意, definition of insideness可能导致shape定义轮廓上的shape不能被视为包含在返回的bounds对象中的情况,但仅在这些点也未被包含在原始shape

        如果point是内部shape根据contains(point)方法,那么它必须是内部返回Rectangle界限根据对象contains(point)所述的方法bounds 特别:

        shape.contains(x,y)需要bounds.contains(x,y)

        如果一个point不在shape ,那么它可能仍然包含在bounds对象中:

        bounds.contains(x,y)并不表示shape.contains(x,y)

        Specified by:
        getBounds接口 Shape
        结果
        一个整数 Rectangle ,完全包围了 Shape
        从以下版本开始:
        1.2
        另请参见:
        Shape.getBounds2D()
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at)
        返回一个定义Line2D边界的迭代对象。 此类的迭代器不是多线程安全的,这意味着此Line2D类不保证对此Line2D对象的几何形状的修改不会影响已处理的该几何的任何迭代。
        Specified by:
        getPathIterator在接口 Shape
        参数
        at - 指定的AffineTransform
        结果
        一个PathIterator定义了这个Line2D的边界。
        从以下版本开始:
        1.2
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at,
                                            double flatness)
        返回一个迭代对象,该对象定义了此扁平化的边界Line2D 此类的迭代器不是多线程安全的,这意味着该Line2D类不保证对此Line2D对象的几何的修改不会影响已经在处理的该几何的任何迭代。
        Specified by:
        getPathIterator接口 Shape
        参数
        at - 指定的 AffineTransform
        flatness - 给定曲线的控制点的最大量可以在将细分曲线替换为连接终点的直线代替之前从共线线变化。 由于Line2D对象总是平坦的,因此该参数将被忽略。
        结果
        一个 PathIterator定义了平面化的边界 Line2D
        从以下版本开始:
        1.2
      • clone

        public Object clone​()
        创建与此对象相同类的新对象。
        重写:
        cloneObject
        结果
        这个实例的一个克隆。
        异常
        OutOfMemoryError - 如果没有足够的内存
        从以下版本开始:
        1.2
        另请参见:
        Cloneable