模块  java.desktop
软件包  java.awt.geom

Class Line2D

  • 实现的所有接口
    ShapeCloneable
    已知直接子类:
    Line2D.DoubleLine2D.Float

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

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

    从以下版本开始:
    1.2
    • 嵌套类汇总

      嵌套类  
      变量和类型 描述
      static class  Line2D.Double
      用双坐标指定的线段。
      static class  Line2D.Float
      用浮点坐标指定的线段。
    • 构造方法摘要

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

      所有方法  静态方法  实例方法 抽象方法  具体的方法 
      变量和类型 方法 描述
      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()
      以double精度返回起始点的X坐标。
      abstract double getX2()
      以double精度返回结束点的X坐标。
      abstract double getY1()
      以double精度返回起始点的Y坐标。
      abstract double getY2()
      以double精度返回结束点的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()
        以double精度返回起始点的X坐标。
        结果
        Line2D对象的起点的X坐标。
        从以下版本开始:
        1.2
      • getY1

        public abstract double getY1()
        以double精度返回起始点的Y坐标。
        结果
        Line2D对象的起点的Y坐标。
        从以下版本开始:
        1.2
      • getP1

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

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

        public abstract double getY2()
        以double精度返回结束点的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表示线段必须在使正X轴朝向负Y轴的方向上转动。 在Java 2D使用的默认坐标系中,此方向是逆时针方向。

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

        返回值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坐标
        结果
        一个double值,它是从指定点到指定线段的距离的平方。
        从以下版本开始:
        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坐标
        结果
        一个double值,它是指定点到指定线段的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptLineDist(double, double, double, double, double, double)
      • ptSegDistSq

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

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

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

        public double ptSegDist​(Point2D pt)
        返回从Point2D到此线段的距离。 测量的距离是指定点与当前线的终点之间的最近点之间的距离。 如果指定的点与端点之间的线段相交,则此方法返回0.0。
        参数
        pt - 针对此线段测量的指定 Point2D
        结果
        一个double值,它是指定的 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坐标
        结果
        一个double值,它是从指定点到指定行的距离的平方。
        从以下版本开始:
        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坐标
        结果
        一个double值,它是指定点到指定行的距离。
        从以下版本开始:
        1.2
        另请参见:
        ptSegDist(double, double, double, double, double, double)
      • ptLineDistSq

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

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

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

        public double ptLineDist​(Point2D pt)
        返回从Point2D到此行的距离。 测量的距离是指定点与由此Line2D定义的无限延长线上的最近点之间的距离。 如果指定的点与线相交,则此方法返回0.0。
        参数
        pt - 正在测量的指定的 Point2D
        结果
        一个double值,它是指定的 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 in interface 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实现在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实现在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的内部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可能会导致4659663575173定义轮廓上的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 - 在将细分曲线替换为连接端点的直线之前,给定曲线的控制点的最大量可以flatness线变化。 由于Line2D对象始终为flat,因此将忽略此参数。
        结果
        PathIterator ,用于定义展平 Line2D的边界
        从以下版本开始:
        1.2
      • clone

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