package jo.vecmath.logic; import jo.vecmath.Point3i; public class Point3iLogic { public static int distance(Point3i p1, Point3i p2) { int dx = p1.x - p2.x; int dy = p1.y - p2.y; int dz = p1.z - p2.z; return (int) Math.sqrt(dx * dx + dy * dy + dz * dz); } public static Point3i min(Point3i p, Point3i lower, Point3i upper) { if (lower == null) { if (upper == null) { return p; } else { p.set(upper); return p; } } if (upper == null) { p.set(lower); return p; } p.x = Math.min(lower.x, upper.x); p.y = Math.min(lower.y, upper.y); p.z = Math.min(lower.z, upper.z); return p; } public static Point3i max(Point3i p, Point3i lower, Point3i upper) { if (lower == null) { if (upper == null) { return p; } else { p.set(upper); return p; } } if (upper == null) { p.set(lower); return p; } p.x = Math.max(lower.x, upper.x); p.y = Math.max(lower.y, upper.y); p.z = Math.max(lower.z, upper.z); return p; } public static Point3i min(Point3i lower, Point3i upper) { if (lower == null) { return upper; } if (upper == null) { return lower; } return min(new Point3i(), lower, upper); } public static Point3i max(Point3i lower, Point3i upper) { if (lower == null) { return upper; } if (upper == null) { return lower; } return max(new Point3i(), lower, upper); } public static Point3i interpolate(Point3i lower, Point3i upper, float f) { Point3i p = new Point3i( (int) (MathUtils.interpolate(f, 0, 1, lower.x, upper.x) + .5f), (int) (MathUtils.interpolate(f, 0, 1, lower.y, upper.y) + .5f), (int) (MathUtils.interpolate(f, 0, 1, lower.z, upper.z) + .5f) ); return p; } }