/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.service.protocol; import java.awt.geom.*; /** * A point representing a location in {@code (x,y)} coordinate space, * specified in integer precision. *

* This class has been inspired by the java.awt.Point class. *

* @author Julien Waechter * @author Emil Ivov */ public class WhiteboardPoint implements Cloneable { /** * The X coordinate of this WhiteboadPoint. */ private double x; /** * The Y coordinate of this Point. */ private double y; /** * Constructs and initializes a point with the same location as * the specified Point object. * @param p a point */ public WhiteboardPoint(WhiteboardPoint p) { this(p.x, p.y); } /** * Constructs and initializes a point at the specified (x,y) * location in the coordinate space. * * @param x the X coordinate of the newly constructed Point * @param y the Y coordinate of the newly constructed Point * @since 1.0 */ public WhiteboardPoint(double x, double y) { this.x = x; this.y = y; } /** * Returns the X coordinate of this WhiteboardPoint. * * @return the x coordinate of this WhiteboardPoint. */ public double getX() { return x; } /** * Returns the Y coordinate of this WhiteboardPoint. * * @return the y coordinate of this WhiteboardPoint. */ public double getY() { return y; } /** * Sets a new value to the x coordinate. * * @param y the new value of the x coordinate */ public void setX(double x) { this.x = x; } /** * Sets a new value to the y coordinate. * * @param y the new value of the y coordinate */ public void setY(double y) { this.y = y; } /** * Determines whether or not two points are equal. Two instances of * WhiteboardPoint are equal if the values of their * x and y member fields, representing * their position in the coordinate space, are the same. * * @param obj an object to be compared with this WhiteboardPoint * * @return true if the object to be compared is an instance of * WhiteboardPoint and has the same values; false * otherwise. */ public boolean equals(Object obj) { if (obj instanceof WhiteboardPoint) { WhiteboardPoint pt = (WhiteboardPoint)obj; return (x == pt.x) && (y == pt.y); } return false; } /** * Returns a string representation of this point and its location * in the {@code (x,y)} coordinate space. This method is intended to be * used only for debugging purposes, and the content and format of the * returned string may vary between implementations. * * The returned string may be empty but may not be null. * * @return a string representation of this point */ public String toString() { return getClass().getName() + "[x=" + x + ",y=" + y + "]"; } /** * Creates and returns a copy of this WhiteboardPoint. * * @return a clone of this WhiteboardPoint instance. */ protected Object clone() { return new WhiteboardPoint(this); } /** * Calculates the distance from this point the given point. * * @param p the point to which to calculate the distance * @return the distance between this point and the given point */ public double distance(WhiteboardPoint p) { double PX = p.getX() - this.getX(); double PY = p.getY() - this.getY(); return Math.sqrt(PX * PX + PY * PY); } }