package com.baselet.control.basics.geom; /** * an immutable point with double coordinates * must be immutable because equals and hashcode is overwritten and sets and maps can contain PointDouble as keys */ public class PointDouble { public final Double x; public final Double y; public PointDouble(double x, double y) { super(); this.x = x; this.y = y; } public Double getX() { return x; } public Double getY() { return y; } public double distance(PointDouble o) { double distX = o.getX() - getX(); double distY = o.getY() - getY(); return Math.sqrt(distX * distX + distY * distY); } public PointDouble copy() { return new PointDouble(x, y); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (x == null ? 0 : x.hashCode()); result = prime * result + (y == null ? 0 : y.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } PointDouble other = (PointDouble) obj; if (x == null) { if (other.x != null) { return false; } } else if (!x.equals(other.x)) { return false; } if (y == null) { if (other.y != null) { return false; } } else if (!y.equals(other.y)) { return false; } return true; } @Override public String toString() { return "p(x=" + x + " y=" + y + ")"; } }