public double bearingTo(Placeable p) { int xdist, ydist; double angle; double bearing; if (p == null) { return 0; } xdist = p.getX() - xcoord; ydist = p.getY() - ycoord; angle = Math.atan(((double) ydist) / xdist); angle = angle * 180 / Math.PI; if (angle < 0) { if (xdist < 0) { angle = 180 + angle; // 360 + angle - 180 } else { angle = 360 + angle; } } else if (xdist < 0) { angle = 180 + angle; } if (angle > heading) { bearing = angle - heading; } else if (angle == heading) { bearing = 0; } else { bearing = angle + 360 - heading; } return bearing; }