package org.openpixi.pixi.physics.util;
import java.io.Serializable;
public class IntBox implements Serializable {
private int xmin;
private int xmax;
private int ymin;
private int ymax;
public IntBox(int xmin, int xmax, int ymin, int ymax) {
this.xmin = xmin;
this.xmax = xmax;
this.ymin = ymin;
this.ymax = ymax;
}
public int xmin() {
return xmin;
}
public int xsize() {
return xmax - xmin + 1;
}
public int xmax() {
return xmax;
}
public int ymin() {
return ymin;
}
public int ymax() {
return ymax;
}
public int ysize() {
return ymax - ymin + 1;
}
public boolean contains(int x, int y) {
if (xmin <= x && x <= xmax && ymin <= y && y <= ymax()) {
return true;
}
else {
return false;
}
}
/**
* Returns distance of a given point to the border of this box.
* Point lying on xmin, xmax, ymin or ymax has distance 0.
* Does not distinguish whether the point lies outside the box or inside.
*/
public int distanceFromBorder(int x, int y) {
int xmind = Math.min(Math.abs(x - xmin), Math.abs(x - xmax));
int ymind = Math.min(Math.abs(y - ymin), Math.abs(y - ymax));
return Math.min(xmind, ymind);
}
@Override
public String toString() {
return String.format("[%d,%d,%d,%d]", xmin, xmax, ymin, ymax);
}
}