package ProGAL.geom3d.kineticDelaunay;

public class TrianglePoints {
	Vertex p0;
	Vertex p1;
	Vertex p2;
	
	public TrianglePoints(Vertex p0, Vertex p1, Vertex p2) {
		this.p0 = p0;
		this.p1 = p1;
		this.p2 = p2;
		sortCorners();
	}
	
	private void sortCorners() {
		int id0 = p0.getId();
		int id1 = p1.getId();
		int id2 = p2.getId();
		Vertex tmp;
		if (id0>id1) {
			if (id2>id1) {
				tmp = p0;
				p0 = p1;
				if (id0>id2) {
					p1 = p2;
					p2 = tmp;
				} else p1 = tmp;
			} else {
				tmp = p0;
				p0 = p2;
				p2 = tmp;
			}
		}
		if (id1>id2) {
			if (id0>id2){
				tmp = p0;
				p0 = p2;
				p2 = p1;
				p1 = tmp;
			} else {
				tmp = p1;
				p1 = p2;
				p2 = tmp;
			}
		}
	}
	
	public boolean equals(Object o) {
		if(!(o instanceof TrianglePoints)) return false;
		return (((TrianglePoints)o).p0.equals(p0) && 
				((TrianglePoints)o).p1.equals(p1) && 
				((TrianglePoints)o).p2.equals(p2));
	}
	
	public int hashCode() {
		return p0.getId()+p1.getId()+p2.getId();
	}
}