package squidpony.squidmath; import java.io.Serializable; /** * Coord using double values for x and y instead of int. Not pooled. * Created by Tommy Ettinger on 8/12/2015. */ public class CoordDouble implements Serializable { private static final long serialVersionUID = 300L; public double x; public double y; public CoordDouble() { this(0, 0); } public CoordDouble(double x, double y) { this.x = x; this.y = y; } public CoordDouble(CoordDouble other) { x = other.x; y = other.y; } public CoordDouble(Coord other) { x = other.x; y = other.y; } public static CoordDouble get(double x, double y) { return new CoordDouble(x, y); } public CoordDouble getLocation() { return new CoordDouble(x, y); } public void translate(double x, double y) { this.x += x; this.y += y; } public void setLocation(double x, double y) { this.x = x; this.y = y; } public void setLocation(CoordDouble co) { x = co.x; y = co.y; } public void move(int x, int y) { this.x = x; this.y = y; } public double distance(double x2, double y2) { return Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y)); } public double distance(CoordDouble co) { return Math.sqrt((co.x - x) * (co.x - x) + (co.y - y) * (co.y - y)); } public double distanceSq(double x2, double y2) { return (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y); } public double distanceSq(CoordDouble co) { return (co.x - x) * (co.x - x) + (co.y - y) * (co.y - y); } public double getX() { return x; } public void setX(int x) { this.x = x; } public double getY() { return y; } public void setY(int y) { this.y = y; } @Override public String toString() { return "Coord (x " + x + ", y " + y + ")"; } @Override /* * smelC: This is Eclipse-generated code. The previous version was * Gwt-incompatible (because of Double.doubleToRawLongBits). */ public int hashCode() { final int prime = 31; int result = 1; long temp; temp = NumberTools.doubleToLongBits(x); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = NumberTools.doubleToLongBits(y); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(Object o) { if (o instanceof CoordDouble) { CoordDouble other = (CoordDouble) o; return x == other.x && y == other.y; } else { return false; } } }