/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package armyc2.c2sd.graphics2d; import armyc2.c2sd.JavaLineArray.POINT2; /* * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ import java.io.Serializable; /** * The <code>Point2D</code> class defines a point representing a location in * {@code (x,y)} coordinate space. * <p> * This class is only the abstract superclass for all objects that store a 2D * coordinate. The actual storage representation of the coordinates is left to * the subclass. * * @author Jim Graham * @since 1.2 */ public abstract class Point2D implements Cloneable{ /** * The <code>Float</code> class defines a point specified in float * precision. * * @since 1.2 */ public static class Float extends Point2D implements Serializable { /** * The X coordinate of this <code>Point2D</code>. * * @since 1.2 * @serial */ public float x; /** * The Y coordinate of this <code>Point2D</code>. * * @since 1.2 * @serial */ public float y; /** * Constructs and initializes a <code>Point2D</code> with coordinates * (0, 0). * * @since 1.2 */ public Float() { } /** * Constructs and initializes a <code>Point2D</code> with the specified * coordinates. * * @param x * the X coordinate of the newly constructed * <code>Point2D</code> Point2D.java : » App » android-app-examples » org » loon » framework » android » gam... Page 1 of 6 http://www.java2s.com/Open-Source/Android/App/android-app-examples/org/loon/frame... 2/25/2013 * @param y * the Y coordinate of the newly constructed * <code>Point2D</code> * @since 1.2 */ public Float(float x, float y) { this.x = x; this.y = y; } /** * {@inheritDoc} * * @since 1.2 */ public double getX() { return (double) x; } /** * {@inheritDoc} * * @since 1.2 */ public double getY() { return (double) y; } /** * {@inheritDoc} * * @since 1.2 */ public void setLocation(double x, double y) { this.x = (float) x; this.y = (float) y; } /** * Sets the location of this <code>Point2D</code> to the specified * <code>float</code> coordinates. * * @param x * the new X coordinate of this {@code Point2D} * @param y * the new Y coordinate of this {@code Point2D} * @since 1.2 */ public void setLocation(float x, float y) { this.x = x; this.y = y; } /** * Returns a <code>String</code> that represents the value of this * <code>Point2D</code>. * * @return a string representation of this <code>Point2D</code>. * @since 1.2 */ public String toString() { return "Point2D.Float[" + x + ", " + y + "]"; } /* * JDK 1.6 serialVersionUID */ private static final long serialVersionUID = -2870572449815403710L; } /** * The <code>Double</code> class defines a point specified in * <code>double</code> precision. * * @since 1.2 */ public static class Double extends Point2D implements Serializable { /** * The X coordinate of this <code>Point2D</code>. * * @since 1.2 * @serial */ public double x; /** * The Y coordinate of this <code>Point2D</code>. * * @since 1.2 * @serial */ public double y; /** * Constructs and initializes a <code>Point2D</code> with coordinates * (0, 0). * * @since 1.2 */ public Double() { } /** * Constructs and initializes a <code>Point2D</code> with the specified * coordinates. * * @param x * the X coordinate of the newly constructed * <code>Point2D</code> * @param y * the Y coordinate of the newly constructed * <code>Point2D</code> * @since 1.2 */ public Double(double x, double y) { this.x = x; this.y = y; } /** * add the constructor * @param pt */ public Double(POINT2 pt) { this.x=pt.x; this.y=pt.y; } /** * {@inheritDoc} * * @since 1.2 */ public double getX() { return x; } /** * {@inheritDoc} * * @since 1.2 */ public double getY() { return y; } /** * {@inheritDoc} * * @since 1.2 */ public void setLocation(double x, double y) { this.x = x; this.y = y; } /** * Returns a <code>String</code> that represents the value of this * <code>Point2D</code>. * * @return a string representation of this <code>Point2D</code>. * @since 1.2 */ public String toString() { return "Point2D.Double[" + x + ", " + y + "]"; } /* * JDK 1.6 serialVersionUID */ private static final long serialVersionUID = 6150783262733311327L; } /** * This is an abstract class that cannot be instantiated directly. * Type-specific implementation subclasses are available for instantiation * and provide a number of formats for storing the information necessary to * satisfy the various accessor methods below. * * @see and.awt.geom.Point2D.Float * @see and.awt.geom.Point2D.Double * @see and.awt.Point * @since 1.2 */ protected Point2D() { } /** * Returns the X coordinate of this <code>Point2D</code> in * <code>double</code> precision. * Point2D.java : » App » android-app-examples » org » loon » framework » android » gam... Page 3 of 6 http://www.java2s.com/Open-Source/Android/App/android-app-examples/org/loon/frame... 2/25/2013 * @return the X coordinate of this <code>Point2D</code>. * @since 1.2 */ public abstract double getX(); /** * Returns the Y coordinate of this <code>Point2D</code> in * <code>double</code> precision. * * @return the Y coordinate of this <code>Point2D</code>. * @since 1.2 */ public abstract double getY(); /** * Sets the location of this <code>Point2D</code> to the specified * <code>double</code> coordinates. * * @param x * the new X coordinate of this {@code Point2D} * @param y * the new Y coordinate of this {@code Point2D} * @since 1.2 */ public abstract void setLocation(double x, double y); /** * Sets the location of this <code>Point2D</code> to the same coordinates as * the specified <code>Point2D</code> object. * * @param p * the specified <code>Point2D</code> to which to set this * <code>Point2D</code> * @since 1.2 */ public void setLocation(Point2D p) { setLocation(p.getX(), p.getY()); } /** * Returns the square of the distance between two points. * * @param x1 * the X coordinate of the first specified point * @param y1 * the Y coordinate of the first specified point * @param x2 * the X coordinate of the second specified point * @param y2 * the Y coordinate of the second specified point * @return the square of the distance between the two sets of specified * coordinates. * @since 1.2 */ public static double distanceSq(double x1, double y1, double x2, double y2) { x1 -= x2; y1 -= y2; return (x1 * x1 + y1 * y1); } /** * Returns the distance between two points. * * @param x1 * the X coordinate of the first specified point * @param y1 * the Y coordinate of the first specified point * @param x2 * the X coordinate of the second specified point * @param y2 * the Y coordinate of the second specified point * @return the distance between the two sets of specified coordinates. * @since 1.2 */ public static double distance(double x1, double y1, double x2, double y2) { x1 -= x2; y1 -= y2; return Math.sqrt(x1 * x1 + y1 * y1); } /** * Determines whether or not two points are equal. Two instances of * <code>Point2D</code> are equal if the values of their <code>x</code> and * <code>y</code> member fields, representing their position in the * coordinate space, are the same. * * @param obj * an object to be compared with this <code>Point2D</code> * @return <code>true</code> if the object to be compared is an instance of * <code>Point2D</code> and has the same values; <code>false</code> * otherwise. * @since 1.2 */ public boolean equals(Object obj) { if (obj instanceof Point2D) { Point2D p2d = (Point2D) obj; return (getX() == p2d.getX()) && (getY() == p2d.getY()); } return super.equals(obj); } }