JavaTM Platform
Standard Ed. 6

java.awt.geom
类 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) 坐标空间中的线段。像 Java 2D API 的所有类一样,此类使用称为用户空间 的默认坐标系,其中 Y 轴的值向下增大,X 轴的值向右增大。有关用户空间坐标系的更多信息,请参阅 Java 2D Programmer's Guide 中的 Coordinate Systems 部分。

此类是所有存储 2D 线段的对象的惟一抽象超类。坐标的实际存储表示形式由子类决定。

从以下版本开始:
1.2

嵌套类摘要
static class Line2D.Double
          使用 double 坐标指定的线段。
static class Line2D.Float
          使用 float 坐标指定的线段。
 
构造方法摘要
protected Line2D()
          这是一个无法直接实例化的抽象类。
 
方法摘要
 Object clone()
          创建一个与此对象具有相同类的新对象。
 boolean contains(double x, double y)
          测试指定坐标是否在此 Line2D 对象的边界内。
 boolean contains(double x, double y, double w, double h)
          测试此 Line2D 的内部是否完全包含指定矩形坐标集。
 boolean contains(Point2D p)
          测试给定 Point2D 是否在此 Line2D 的边界内。
 boolean contains(Rectangle2D r)
          测试此 Line2D 内部是否完全包含指定的 Rectangle2D
 Rectangle getBounds()
          返回一个完全包围 Shape 的整型 Rectangle
abstract  Point2D getP1()
          返回此 Line2D 的起始 Point2D
abstract  Point2D getP2()
          返回此 Line2D 的结束 Point2D
 PathIterator getPathIterator(AffineTransform at)
          返回定义此 Line2D 边界的迭代对象。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          返回定义此变平的 Line2D 边界的迭代对象。
abstract  double getX1()
          返回起始点的 X 坐标(以 double 精度表示)。
abstract  double getX2()
          返回结束点的 X 坐标(以 double 精度表示)。
abstract  double getY1()
          返回起始点的 Y 坐标(以 double 精度表示)。
abstract  double getY2()
          返回结束点的 Y 坐标(以 double 精度表示)。
 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) 的线段是否与此线段相交。
 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) 相对于此线段的位置。
static int relativeCCW(double x1, double y1, double x2, double y2, double px, double py)
          返回一个指示符,指示指定点 (px,py) 相对于从 (x1,y1)(x2,y2) 的线段的位置。
 int relativeCCW(Point2D p)
          返回一个指示符,指示指定 Point2D 相对于此线段的位置。
abstract  void setLine(double x1, double y1, double x2, double y2)
          将此 Line2D 的端点位置设置为指定的 double 坐标。
 void setLine(Line2D l)
          将此 Line2D 端点的位置设置为与指定 Line2D 的这些端点相同。
 void setLine(Point2D p1, Point2D p2)
          将此 Line2D 端点的位置设置为指定的 Point2D 坐标。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
从接口 java.awt.Shape 继承的方法
getBounds2D
 

构造方法详细信息

Line2D

protected Line2D()
这是一个无法直接实例化的抽象类。特定于类型的实现子类可用于实例化,并提供用于存储满足以下各种存取方法所需信息的多种格式。

从以下版本开始:
1.2
另请参见:
Line2D.Float, Line2D.Double
方法详细信息

getX1

public abstract double getX1()
返回起始点的 X 坐标(以 double 精度表示)。

返回:
Line2D 对象起始点的 X 坐标。
从以下版本开始:
1.2

getY1

public abstract double getY1()
返回起始点的 Y 坐标(以 double 精度表示)。

返回:
Line2D 对象起始点的 Y 坐标。
从以下版本开始:
1.2

getP1

public abstract Point2D getP1()
返回此 Line2D 的起始 Point2D

返回:
Line2D 的起始 Point2D

getX2

public abstract double getX2()
返回结束点的 X 坐标(以 double 精度表示)。

返回:
Line2D 对象结束点的 X 坐标。
从以下版本开始:
1.2

getY2

public abstract double getY2()
返回结束点的 Y 坐标(以 double 精度表示)。

返回:
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 的端点位置设置为指定的 double 坐标。

参数:
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,指示为了指向指定点 (px,py),指定的线段必须绕其第一个端点 (x1,y1) 旋转的方向。

返回值 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(double, double, double, double, double, double)

relativeCCW

public int relativeCCW(Point2D p)
返回一个指示符,指示指定 Point2D 相对于此线段的位置。关于返回值的解释,请参见 relativeCCW(double, double, double, double, double, double) 的方法注释。

参数:
p - 将与此 Line2D 比较的指定 Point2D
返回:
一个整数,指示指定 Point2D 相对于此 Line2D 的位置
从以下版本开始:
1.2
另请参见:
relativeCCW(double, double, double, double, double, double)

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 坐标
返回:
一个 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,因为线不包含任何区域。

指定者:
接口 Shape 中的 contains
参数:
x - 将被测试的指定点的 X 坐标
y - 将被测试的指定点的 Y 坐标
返回:
false,因为 Line2D 不包含任何区域。
从以下版本开始:
1.2

contains

public boolean contains(Point2D p)
测试给定 Point2D 是否在此 Line2D 的边界内。此方法需要实现 Shape 接口,但是对于 Line2D 对象来说,它始终返回 false,因为线不包含任何区域。

指定者:
接口 Shape 中的 contains
参数:
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,即使矩形区域没有与该 Shape 相交,此方法也可能返回 true。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地计算几何相交,因此可以使用该类。

指定者:
接口 Shape 中的 intersects
参数:
x - 指定矩形区域左上角的 X 坐标
y - 指定矩形区域左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
如果 Shape 的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回 true;否则返回 false
从以下版本开始:
1.2
另请参见:
Area

intersects

public boolean intersects(Rectangle2D r)
测试 Shape 内部是否与指定 Rectangle2D 内部相交。在下列情况下, Shape.intersects() 方法允许 Shape 实现谨慎地返回 true 这意味着对于某些 Shape,即使 Rectangle2D 没有与该 Shape 相交,此方法也可能返回 true。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地计算几何相交,因此可以使用该类。

指定者:
接口 Shape 中的 intersects
参数:
r - 指定的 Rectangle2D
返回:
如果 Shape 内部与指定 Rectangle2D 内部相交,或者相交的可能性很大且执行计算的代价太高,则返回 true;否则返回 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,因为线不包含任何区域。

指定者:
接口 Shape 中的 contains
参数:
x - 指定矩形区域的左上角的 X 坐标
y - 指定矩形区域的左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
false,因为 Line2D 不包含任何区域。
从以下版本开始:
1.2
另请参见:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
测试此 Line2D 内部是否完全包含指定的 Rectangle2D。此方法需要实现 Shape 接口,但是对于 Line2D 对象来说,它始终返回 false,因为线不包含任何区域。

指定者:
接口 Shape 中的 contains
参数:
r - 要测试的指定 Rectangle2D
返回:
false,因为 Line2D 不包含任何区域。
从以下版本开始:
1.2
另请参见:
Shape.contains(double, double, double, double)

getBounds

public Rectangle getBounds()
返回一个完全包围 Shape 的整型 Rectangle。注意,不保证返回的 Rectangle 是包围 Shape 的最小边界框,只保证 Shape 完全位于指示的 Rectangle 中。如果 Shape 超出了整数数据类型的有效范围,则返回的 Rectangle 也可能不完全包围 ShapegetBounds2D 方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。

指定者:
接口 Shape 中的 getBounds
返回:
完全包围 Shape 的整型 Rectangle
从以下版本开始:
1.2
另请参见:
Shape.getBounds2D()

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
返回定义此 Line2D 边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此 Line2D 类不保证对此 Line2D 对象几何形状所作的修改不会影响该几何形状中正在进行的迭代。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - 指定的 AffineTransform
返回:
定义此 Line2D 的边界的 PathIterator
从以下版本开始:
1.2

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
返回定义此变平的 Line2D 边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此 Line2D 类不保证对此 Line2D 对象几何形状所作的修改不会影响该几何形状中正在进行的迭代。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - 指定的 AffineTransform
flatness - 在由连接端点的直线取代细分曲线之前,给定曲线的控制点可以从共线变化的最大量。因为 Line2D 对象始终是平的,所以此参数会被忽略。
返回:
定义变平的 Line2D 边界的 PathIterator
从以下版本开始:
1.2

clone

public Object clone()
创建一个与此对象具有相同类的新对象。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
抛出:
OutOfMemoryError - 如果没有足够的内存。
从以下版本开始:
1.2
另请参见:
Cloneable

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策