/** * @param pos * @return The nearest position within the region to the given pos. */ public Vector3i getNearestPointTo(BaseVector3i pos) { Vector3i result = new Vector3i(pos); result.min(max()); result.max(min); return result; }
public Region3i expandToContain(BaseVector3i adjPos) { Vector3i expandedMin = min(); expandedMin.min(adjPos); Vector3i expandedMax = max(); expandedMax.max(adjPos); return createFromMinMax(expandedMin, expandedMax); }
/** * Create a region by two point * @param a vertex a * @param b the diagonal vertex of a * @return a new region base on vertex a and b */ public static Region3i createBounded(BaseVector3i a, BaseVector3i b) { Vector3i min = new Vector3i(a); min.min(b); Vector3i max = new Vector3i(a); max.max(b); return createFromMinMax(min, max); }
/** * @param other * @return The region that is encompassed by both this and other. If they * do not overlap then the empty region is returned */ public Region3i intersect(Region3i other) { Vector3i intersectMin = min(); intersectMin.max(other.min()); Vector3i intersectMax = max(); intersectMax.min(other.max()); return createFromMinMax(intersectMin, intersectMax); }
@Test public void testMin() { Vector3i v = new Vector3i(v1); v.min(new Vector3i(v1.z, v1.y, v1.x)); assertEquals(Math.min(v1.x, v1.z), v.x); assertEquals(v1.y, v.y); assertEquals(Math.min(v1.x, v1.z), v.z); }
public static Region3i createEncompassing(Region3i a, Region3i b) { if (a.isEmpty()) { return b; } if (b.isEmpty()) { return a; } Vector3i min = a.min(); min.min(b.min()); Vector3i max = a.max(); max.max(b.max()); return createFromMinMax(min, max); }