line2d.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,041 行 · 第 1/3 页

JAVA
1,041
字号
	 * Return a flat path iterator, possibly applying a transform on the result. This iterator is not threadsafe.
	 * 
	 * @param at
	 *            the transform, or null
	 * @param flatness
	 *            ignored, since lines are already flat
	 * @return a new path iterator
	 * @see #getPathIterator(AffineTransform)
	 */
	public PathIterator getPathIterator(AffineTransform at, double flatness) {
		return getPathIterator(at);
	}

	/**
	 * Create a new line of the same run-time type with the same contents as this one.
	 * 
	 * @return the clone
	 * 
	 * @exception OutOfMemoryError
	 *                If there is not enough memory available.
	 * 
	 * @since 1.2
	 */
	public Object clone() {
		try {
			return super.clone();
		} catch (CloneNotSupportedException e) {
			throw (Error) new InternalError().initCause(e); // Impossible
		}
	}

	/**
	 * This class defines a point in <code>double</code> precision.
	 * 
	 * @author Eric Blake <ebb9@email.byu.edu>
	 * @since 1.2 @status updated to 1.4
	 */
	public static class Double extends Line2D {
		/** The x coordinate of the first point. */
		public double x1;

		/** The y coordinate of the first point. */
		public double y1;

		/** The x coordinate of the second point. */
		public double x2;

		/** The y coordinate of the second point. */
		public double y2;

		/**
		 * Construct the line segment (0,0)-&gt;(0,0).
		 */
		public Double() {
		}

		/**
		 * Construct the line segment with the specified points.
		 * 
		 * @param x1
		 *            the x coordinate of the first point
		 * @param y1
		 *            the y coordinate of the first point
		 * @param x2
		 *            the x coordinate of the second point
		 * @param y2
		 *            the y coordinate of the second point
		 */
		public Double(double x1, double y1, double x2, double y2) {
			this.x1 = x1;
			this.y1 = y1;
			this.x2 = x2;
			this.y2 = y2;
		}

		/**
		 * Construct the line segment with the specified points.
		 * 
		 * @param p1
		 *            the first point
		 * @param p2
		 *            the second point
		 * @throws NullPointerException
		 *             if either point is null
		 */
		public Double(Point2D p1, Point2D p2) {
			x1 = p1.getX();
			y1 = p1.getY();
			x2 = p2.getX();
			y2 = p2.getY();
		}

		/**
		 * Return the x coordinate of the first point.
		 * 
		 * @return the value of x1
		 */
		public double getX1() {
			return x1;
		}

		/**
		 * Return the y coordinate of the first point.
		 * 
		 * @return the value of y1
		 */
		public double getY1() {
			return y1;
		}

		/**
		 * Return the first point.
		 * 
		 * @return the point (x1,y1)
		 */
		public Point2D getP1() {
			return new Point2D.Double(x1, y1);
		}

		/**
		 * Return the x coordinate of the second point.
		 * 
		 * @return the value of x2
		 */
		public double getX2() {
			return x2;
		}

		/**
		 * Return the y coordinate of the second point.
		 * 
		 * @return the value of y2
		 */
		public double getY2() {
			return y2;
		}

		/**
		 * Return the second point.
		 * 
		 * @return the point (x2,y2)
		 */
		public Point2D getP2() {
			return new Point2D.Double(x2, y2);
		}

		/**
		 * Set this line to the given points.
		 * 
		 * @param x1
		 *            the new x coordinate of the first point
		 * @param y1
		 *            the new y coordinate of the first point
		 * @param x2
		 *            the new x coordinate of the second point
		 * @param y2
		 *            the new y coordinate of the second point
		 */
		public void setLine(double x1, double y1, double x2, double y2) {
			this.x1 = x1;
			this.y1 = y1;
			this.x2 = x2;
			this.y2 = y2;
		}

		/**
		 * Return the exact bounds of this line segment.
		 * 
		 * @return the bounding box
		 */
		public Rectangle2D getBounds2D() {
			double x = Math.min(x1, x2);
			double y = Math.min(y1, y2);
			double w = Math.abs(x1 - x2);
			double h = Math.abs(y1 - y2);
			return new Rectangle2D.Double(x, y, w, h);
		}
	} // class Double

	/**
	 * This class defines a point in <code>float</code> precision.
	 * 
	 * @author Eric Blake <ebb9@email.byu.edu>
	 * @since 1.2 @status updated to 1.4
	 */
	public static class Float extends Line2D {
		/** The x coordinate of the first point. */
		public float x1;

		/** The y coordinate of the first point. */
		public float y1;

		/** The x coordinate of the second point. */
		public float x2;

		/** The y coordinate of the second point. */
		public float y2;

		/**
		 * Construct the line segment (0,0)-&gt;(0,0).
		 */
		public Float() {
		}

		/**
		 * Construct the line segment with the specified points.
		 * 
		 * @param x1
		 *            the x coordinate of the first point
		 * @param y1
		 *            the y coordinate of the first point
		 * @param x2
		 *            the x coordinate of the second point
		 * @param y2
		 *            the y coordinate of the second point
		 */
		public Float(float x1, float y1, float x2, float y2) {
			this.x1 = x1;
			this.y1 = y1;
			this.x2 = x2;
			this.y2 = y2;
		}

		/**
		 * Construct the line segment with the specified points.
		 * 
		 * @param p1
		 *            the first point
		 * @param p2
		 *            the second point
		 * @throws NullPointerException
		 *             if either point is null
		 */
		public Float(Point2D p1, Point2D p2) {
			x1 = (float) p1.getX();
			y1 = (float) p1.getY();
			x2 = (float) p2.getX();
			y2 = (float) p2.getY();
		}

		/**
		 * Return the x coordinate of the first point.
		 * 
		 * @return the value of x1
		 */
		public double getX1() {
			return x1;
		}

		/**
		 * Return the y coordinate of the first point.
		 * 
		 * @return the value of y1
		 */
		public double getY1() {
			return y1;
		}

		/**
		 * Return the first point.
		 * 
		 * @return the point (x1,y1)
		 */
		public Point2D getP1() {
			return new Point2D.Float(x1, y1);
		}

		/**
		 * Return the x coordinate of the second point.
		 * 
		 * @return the value of x2
		 */
		public double getX2() {
			return x2;
		}

		/**
		 * Return the y coordinate of the second point.
		 * 
		 * @return the value of y2
		 */
		public double getY2() {
			return y2;
		}

		/**
		 * Return the second point.
		 * 
		 * @return the point (x2,y2)
		 */
		public Point2D getP2() {
			return new Point2D.Float(x2, y2);
		}

		/**
		 * Set this line to the given points.
		 * 
		 * @param x1
		 *            the new x coordinate of the first point
		 * @param y1
		 *            the new y coordinate of the first point
		 * @param x2
		 *            the new x coordinate of the second point
		 * @param y2
		 *            the new y coordinate of the second point
		 */
		public void setLine(double x1, double y1, double x2, double y2) {
			this.x1 = (float) x1;
			this.y1 = (float) y1;
			this.x2 = (float) x2;
			this.y2 = (float) y2;
		}

		/**
		 * Set this line to the given points.
		 * 
		 * @param x1
		 *            the new x coordinate of the first point
		 * @param y1
		 *            the new y coordinate of the first point
		 * @param x2
		 *            the new x coordinate of the second point
		 * @param y2
		 *            the new y coordinate of the second point
		 */
		public void setLine(float x1, float y1, float x2, float y2) {
			this.x1 = x1;
			this.y1 = y1;
			this.x2 = x2;
			this.y2 = y2;
		}

		/**
		 * Return the exact bounds of this line segment.
		 * 
		 * @return the bounding box
		 */
		public Rectangle2D getBounds2D() {
			float x = Math.min(x1, x2);
			float y = Math.min(y1, y2);
			float w = Math.abs(x1 - x2);
			float h = Math.abs(y1 - y2);
			return new Rectangle2D.Float(x, y, w, h);
		}
	} // class Float
} // class Line2D

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?