X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FPoint.java;h=fdef5e647a5891074a232947066cfe380850c978;hb=5f15a6155bf7fbf2d62b3ab9fd992a54af10a95a;hp=d54e631b6a42bf3d9e595eff55bc81d8dcabee24;hpb=965caa65c5048f85c4335fd4d0f962f8c5ae7012;p=anneal.git diff --git a/src/edu/berkeley/qfat/geom/Point.java b/src/edu/berkeley/qfat/geom/Point.java index d54e631..fdef5e6 100644 --- a/src/edu/berkeley/qfat/geom/Point.java +++ b/src/edu/berkeley/qfat/geom/Point.java @@ -2,18 +2,33 @@ package edu.berkeley.qfat.geom; import javax.media.opengl.*; /** point in 3-space; immutable */ -public final class Point { +public final class Point implements HasBoundingBox { public final float x, y, z; public Point(double x, double y, double z) { this((float)x, (float)y, (float)z); } public Point(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } - public float distance(Point p) { return distance(p.x, p.y, p.z); } - public float distance(float ox, float oy, float oz) { return (float)Math.sqrt((x-ox)*(x-ox)+(y-oy)*(y-oy)+(z-oz)*(z-oz)); } + + public static final Point ORIGIN = new Point(0,0,0); + + public float distance(Point p) { return (float)Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z)); } + + // FIXME: this should be eliminated; wrong order public Point times(Matrix m) { return m.times(this); } + public Vec minus(Point p) { return new Vec(x-p.x, y-p.y, z-p.z); } public Point plus(Vec v) { return new Point(x+v.x, y+v.y, z+v.z); } - public boolean equals(Object o) { return o!=null && (o instanceof Point) && ((Point)o).x==x && ((Point)o).y==y && ((Point)o).z==z; } - public void glVertex(GL gl) { _glVertex(gl); } - private void _glVertex(GL gl) { gl.glVertex3f(x, y, z); } + + public void glVertex(GL gl) { gl.glVertex3f(x, y, z); } + public String toString() { return "("+x+","+y+","+z+")"; } + + public boolean equals(Object o) { return o!=null && (o instanceof Point) && ((Point)o).x==x && ((Point)o).y==y && ((Point)o).z==z; } public int hashCode() { return Float.floatToIntBits(x) ^ Float.floatToIntBits(y) ^ Float.floatToIntBits(z); } + + public float getMaxX() { return x; } + public float getMinX() { return x; } + public float getMaxY() { return y; } + public float getMinY() { return y; } + public float getMaxZ() { return z; } + public float getMinZ() { return z; } } +