Module java.desktop
Package java.awt.geom

Class Line2D

java.lang.Object
java.awt.geom.Line2D
所有已实现的接口:
Shape, Cloneable
直接已知的子类:
Line2D.Double, Line2D.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
    Description
    static class 
    使用双精度坐标指定的线段。
    static class 
    使用浮点坐标指定的线段。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Line2D()
    这是一个无法直接实例化的抽象类。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    创建一个与此对象相同类的新对象。
    boolean
    contains(double x, double y)
    测试指定坐标是否在此Line2D的边界内。
    boolean
    contains(double x, double y, double w, double h)
    测试此Line2D的内部是否完全包含指定的一组矩形坐标。
    boolean
    测试给定的Point2D是否在此Line2D的边界内。
    boolean
    测试此Line2D的内部是否完全包含指定的Rectangle2D
    返回完全包围Shape的整数Rectangle
    abstract Point2D
    getP1()
    返回此Line2D的起始Point2D
    abstract Point2D
    getP2()
    返回此Line2D的结束Point2D
    返回定义此Line2D边界的迭代对象。
    getPathIterator(AffineTransform at, double flatness)
    返回定义此扁平化Line2D边界的迭代对象。
    abstract double
    getX1()
    返回双精度起始点的X坐标。
    abstract double
    getX2()
    返回双精度结束点的X坐标。
    abstract double
    getY1()
    返回双精度起始点的Y坐标。
    abstract double
    getY2()
    返回双精度结束点的Y坐标。
    boolean
    intersects(double x, double y, double w, double h)
    测试Shape的内部是否与指定的矩形区域的内部相交。
    boolean
    测试Shape的内部是否与指定的Rectangle2D的内部相交。
    boolean
    intersectsLine(double x1, double y1, double x2, double y2)
    测试从(x1,y1)(x2,y2)的线段是否与此线段相交。
    boolean
    测试指定的线段是否与此线段相交。
    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
    返回Point2D到此线的距离。
    double
    ptLineDistSq(double px, double py)
    返回点到此线的距离的平方。
    static double
    ptLineDistSq(double x1, double y1, double x2, double y2, double px, double py)
    返回点到线的距离的平方。
    double
    返回指定Point2D到此线的距离的平方。
    double
    ptSegDist(double px, double py)
    返回点到此线段的距离。
    static double
    ptSegDist(double x1, double y1, double x2, double y2, double px, double py)
    返回点到线段的距离。
    double
    返回Point2D到此线段的距离。
    double
    ptSegDistSq(double px, double py)
    返回点到此线段的距离的平方。
    static double
    ptSegDistSq(double x1, double y1, double x2, double y2, double px, double py)
    返回点到线段的距离的平方。
    double
    返回Point2D到此线段的距离的平方。
    int
    relativeCCW(double px, double py)
    返回指定点(px,py)相对于此线段的位置指示器。
    static int
    relativeCCW(double x1, double y1, double x2, double y2, double px, double py)
    返回指定点(px,py)相对于从(x1,y1)(x2,y2)的线段的位置指示器。
    int
    返回指定Point2D相对于此线段的位置指示器。
    abstract void
    setLine(double x1, double y1, double x2, double y2)
    将此Line2D的端点位置设置为指定的双精度坐标。
    void
    将此Line2D的端点位置设置为指定Line2D的端点位置。
    void
    setLine(Point2D p1, Point2D p2)
    将此Line2D的端点位置设置为指定的Point2D坐标。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods declared in interface java.awt.Shape

    getBounds2D
  • Constructor Details

    • Line2D

      protected Line2D()
      这是一个无法直接实例化的抽象类。有特定类型的实现子类可用于实例化,并提供多种格式来存储满足下面各种辅助方法所需信息的方法。
      自:
      1.2
      参见:
  • Method Details

    • getX1

      public abstract double getX1()
      返回双精度起始点的X坐标。
      返回:
      Line2D对象的起始点的X坐标。
      自:
      1.2
    • getY1

      public abstract double getY1()
      返回双精度起始点的Y坐标。
      返回:
      Line2D对象的起始点的Y坐标。
      自:
      1.2
    • getP1

      public abstract Point2D getP1()
      返回此Line2D的起始Point2D
      返回:
      Line2D的起始Point2D
      自:
      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()
      返回此Line2D的结束Point2D
      返回:
      Line2D的结束Point2D
      自:
      1.2
    • setLine

      public abstract void setLine(double x1, double y1, double x2, double y2)
      将此Line2D的端点位置设置为指定的双精度坐标。
      参数:
      x1 - 起始点的X坐标
      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)的线段的位置指示器。返回值可以是1、-1或0,指示指定线段必须围绕其第一个端点(x1,y1)指向指定点(px,py)的方向。

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

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

      返回值为0表示点恰好位于线段上。请注意,指示值为0很少见,由于浮点舍入问题,不适用于确定共线性。

      如果点与线段共线,但不在端点之间,则如果点位于“(x1,y1)之后”,值将为-1,如果点位于“(x2,y2)之后”,值将为1。

      参数:
      x1 - 指定线段的起始点的X坐标
      y1 - 指定线段的起始点的Y坐标
      x2 - 指定线段的结束点的X坐标
      y2 - 指定线段的结束点的Y坐标
      px - 与指定线段进行比较的指定点的X坐标
      py - 与指定线段进行比较的指定点的Y坐标
      返回:
      一个整数,指示第三个指定坐标相对于由前两个指定坐标形成的线段的位置。
      自:
      1.2
    • relativeCCW

      public int relativeCCW(double px, double py)
      返回指定点(px,py)相对于此线段的位置指示器。请参阅relativeCCW(double, double, double, double, double, double)方法的注释以解释返回值。
      参数:
      px - 与此Line2D比较的指定点的X坐标
      py - 与此Line2D比较的指定点的Y坐标
      返回值:
      一个整数,指示指定坐标相对于此Line2D的位置
      自版本:
      1.2
      参见:
    • relativeCCW

      public int relativeCCW(Point2D p)
      返回指定Point2D相对于此线段的位置指示符。请参阅relativeCCW(double, double, double, double, double, double)的方法注释以解释返回值。
      参数:
      p - 与此Line2D比较的指定Point2D
      返回值:
      一个整数,指示指定Point2D相对于此Line2D的位置
      自版本:
      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)的线段是否与此线段相交。
      参数:
      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
      参见:
    • 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
      参见:
    • ptSegDistSq

      public double ptSegDistSq(double px, double py)
      返回从点到此线段的距离的平方。测量的距离是指定点与当前线段端点之间的最近点之间的距离。如果指定点在端点之间与线段相交,则此方法返回0.0。
      参数:
      px - 与此线段进行测量的指定点的X坐标
      py - 与此线段进行测量的指定点的Y坐标
      返回值:
      一个双精度值,表示指定点到当前线段的距离的平方。
      自版本:
      1.2
      参见:
    • ptSegDistSq

      public double ptSegDistSq(Point2D pt)
      返回从Point2D到此线段的距离的平方。测量的距离是指定点与当前线段端点之间的最近点之间的距离。如果指定点在端点之间与线段相交,则此方法返回0.0。
      参数:
      pt - 与此线段进行测量的指定Point2D
      返回值:
      一个双精度值,表示指定Point2D到当前线段的距离的平方。
      自版本:
      1.2
      参见:
    • ptSegDist

      public double ptSegDist(double px, double py)
      返回从点到此线段的距离。测量的距离是指定点与当前线段端点之间的最近点之间的距离。如果指定点在端点之间与线段相交,则此方法返回0.0。
      参数:
      px - 与此线段进行测量的指定点的X坐标
      py - 与此线段进行测量的指定点的Y坐标
      返回值:
      一个双精度值,表示指定点到当前线段的距离。
      自版本:
      1.2
      参见:
    • ptSegDist

      public double ptSegDist(Point2D pt)
      返回从Point2D到此线段的距离。测量的距离是指定点与当前线段端点之间的最近点之间的距离。如果指定点在端点之间与线段相交,则此方法返回0.0。
      参数:
      pt - 与此线段进行测量的指定Point2D
      返回值:
      一个双精度值,表示指定Point2D到当前线段的距离。
      自版本:
      1.2
      参见:
    • 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
      参见:
    • 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
      参见:
    • ptLineDistSq

      public double ptLineDistSq(double px, double py)
      返回从点到此线的距离的平方。测量的距离是指指定点与由此Line2D定义的无限延伸线上最近点之间的距离。如果指定点与线相交,则此方法返回0.0。
      参数:
      px - 被测量的指定点的X坐标,相对于此线
      py - 被测量的指定点的Y坐标,相对于此线
      返回:
      一个double值,表示从指定点到当前线的距离的平方。
      自版本:
      1.2
      参见:
    • ptLineDistSq

      public double ptLineDistSq(Point2D pt)
      返回从指定Point2D到此线的距离的平方。测量的距离是指指定点与由此Line2D定义的无限延伸线上最近点之间的距离。如果指定点与线相交,则此方法返回0.0。
      参数:
      pt - 被测量的指定Point2D,相对于此线
      返回:
      一个double值,表示从指定Point2D到当前线的距离的平方。
      自版本:
      1.2
      参见:
    • ptLineDist

      public double ptLineDist(double px, double py)
      返回从点到此线的距离。测量的距离是指指定点与由此Line2D定义的无限延伸线上最近点之间的距离。如果指定点与线相交,则此方法返回0.0。
      参数:
      px - 被测量的指定点的X坐标,相对于此线
      py - 被测量的指定点的Y坐标,相对于此线
      返回:
      一个double值,表示从指定点到当前线的距离。
      自版本:
      1.2
      参见:
    • ptLineDist

      public double ptLineDist(Point2D pt)
      返回从Point2D到此线的距离。测量的距离是指指定点与由此Line2D定义的无限延伸线上最近点之间的距离。如果指定点与线相交,则此方法返回0.0。
      参数:
      pt - 被测量的指定Point2D
      返回:
      一个double值,表示从指定Point2D到当前线的距离。
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(double x, double y)
      测试指定坐标是否在此Line2D的边界内。此方法需要实现Shape接口,但对于Line2D对象,它总是返回false,因为线条不包含任何区域。
      指定者:
      contains 在接口 Shape
      参数:
      x - 要测试的指定点的X坐标
      y - 要测试的指定点的Y坐标
      返回:
      因为Line2D不包含任何区域,所以返回false
      自版本:
      1.2
    • contains

      public boolean contains(Point2D p)
      测试给定的Point2D是否在此Line2D的边界内。此方法需要实现Shape接口,但对于Line2D对象,它总是返回false,因为线条不包含任何区域。
      指定者:
      contains 在接口 Shape
      参数:
      p - 要测试的指定Point2D
      返回:
      因为Line2D不包含任何区域,所以返回false
      自版本:
      1.2
    • intersects

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

      Shape.intersects()方法允许Shape实现在以下情况下保守地返回true

      • 矩形区域和Shape有很高的概率相交,但
      • 准确确定此交集的计算代价过高。
      这意味着对于某些Shapes,即使矩形区域不与Shape相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      intersects 在接口 Shape
      参数:
      x - 指定矩形区域的左上角的X坐标
      y - 指定矩形区域的左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      如果Shape的内部和矩形区域的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true;否则返回false
      自版本:
      1.2
      参见:
    • intersects

      public boolean intersects(Rectangle2D r)
      测试Shape的内部是否与指定的Rectangle2D的内部相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true
      • Rectangle2DShape有很高的概率相交,但
      • 准确确定此交集的计算代价过高。
      这意味着对于某些Shapes,即使Rectangle2D不与Shape相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      intersects 在接口 Shape
      参数:
      r - 指定的Rectangle2D
      返回:
      如果Shape的内部和指定的Rectangle2D的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true;否则返回false
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(double x, double y, double w, double h)
      测试此Line2D的内部是否完全包含指定的一组矩形坐标。此方法需要实现Shape接口,但对于Line2D对象,它总是返回false,因为线条不包含任何区域。
      指定者:
      contains 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回值:
      false 因为Line2D不包含任何区域。
      自从:
      1.2
      参见:
    • contains

      public boolean contains(Rectangle2D r)
      测试此Line2D的内部是否完全包含指定的Rectangle2D。虽然此方法是为了实现Shape接口而必需的,但对于Line2D对象来说,它总是返回false,因为一条线不包含任何区域。
      指定者:
      contains 在接口 Shape
      参数:
      r - 要测试的指定Rectangle2D
      返回值:
      false 因为Line2D不包含任何区域。
      自从:
      1.2
      参见:
    • getBounds

      public Rectangle getBounds()
      返回一个整数Rectangle,完全包围Shape。请注意,返回的Rectangle不一定是包围Shape的最小边界框,只是确保Shape完全位于指示的Rectangle内。如果Shape超出整数数据类型的有限范围,返回的Rectangle也可能无法完全包围Shape。由于getBounds2D方法在表示上更加灵活,通常返回一个更紧凑的边界框。

      请注意,内部定义可能导致这样的情况:定义shape的轮廓上的点可能不被认为包含在返回的bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下才是如此。

      如果一个point根据contains(point)方法在shape内部,那么根据boundscontains(point)方法,它必须在返回的Rectangle边界对象内部。具体来说:

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

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

      bounds.contains(x,y)不意味着shape.contains(x,y)

      指定者:
      getBounds 在接口 Shape
      返回值:
      一个完全包围Shape的整数Rectangle
      自从:
      1.2
      参见:
    • getPathIterator

      public PathIterator getPathIterator(AffineTransform at)
      返回一个定义此Line2D边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此Line2D类不能保证对此Line2D对象的几何形状的修改不会影响已经在处理中的任何几何形状的迭代。
      指定者:
      getPathIterator 在接口 Shape
      参数:
      at - 指定的AffineTransform
      返回值:
      一个定义此Line2D边界的PathIterator
      自从:
      1.2
    • getPathIterator

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

      public Object clone()
      创建一个与此对象相同类的新对象。
      覆盖:
      clone 在类 Object
      返回值:
      此实例的克隆。
      抛出:
      OutOfMemoryError - 如果内存不足。
      自从:
      1.2
      参见: