X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FPoint.java;h=a4bc27654b5876bb2a56cf5b74d25b9af840a1c9;hp=2de47a6d70dcca8e0bf56589802901a0ab809115;hb=e32bd0376c8c859f51920674c84e6599ef7aeb18;hpb=2d6bccf0ca59bca01f2a9942e90c7ddb9399ed44 diff --git a/src/edu/berkeley/qfat/geom/Point.java b/src/edu/berkeley/qfat/geom/Point.java index 2de47a6..a4bc276 100644 --- a/src/edu/berkeley/qfat/geom/Point.java +++ b/src/edu/berkeley/qfat/geom/Point.java @@ -3,7 +3,7 @@ import javax.media.opengl.*; import javax.media.opengl.glu.*; /** point in 3-space; immutable */ -public final class Point implements HasBoundingBox { +public final class Point extends HasPoint 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; } @@ -14,6 +14,7 @@ public final class Point implements HasBoundingBox { 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 Point midpoint(Point p) { return new Point((x+p.x)/2, (y+p.y)/2, (z+p.z)/2); } public void glVertex(GL gl) { gl.glVertex3f(x, y, z); } @@ -22,25 +23,13 @@ public final class Point implements HasBoundingBox { 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 Point getPoint() { return this; } + 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; } - - public Point glProject(GL gl) { - Point p = this; - int viewport[] = new int[4]; - double mvmatrix[] = new double[16]; - double projmatrix[] = new double[16]; - double wcoord[] = new double[4]; - gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0); - gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0); - gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0); - GLU glu = new GLU(); - glu.gluProject(p.x, p.y, p.z, mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0); - return new Point(wcoord[0], wcoord[1], 0); - } }