X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FPoint.java;h=b98fb2d639ec2775cfd1c2cfb8fd9db840e98dd3;hp=20048e46a0ee404ac80755411a5efd3ba0098ee5;hb=14f962b26092736eed3d8bcfd2d5642c4be4e133;hpb=20fe91a50615c12bdfdec4a72665ff92a700abd5 diff --git a/src/edu/berkeley/qfat/geom/Point.java b/src/edu/berkeley/qfat/geom/Point.java index 20048e4..b98fb2d 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 extends HasPoint implements HasBoundingBox { +public final class Point implements HasBoundingBox, AffineConstraint, HasPoint { public static final Point ZERO = new Point(0,0,0); @@ -12,8 +12,6 @@ public final class Point extends HasPoint implements HasBoundingBox { 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 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)); } public Vec minus(Point p) { return new Vec(x-p.x, y-p.y, z-p.z); } @@ -35,5 +33,14 @@ public final class Point extends HasPoint implements HasBoundingBox { public float getMinY() { return y; } public float getMaxZ() { return z; } public float getMinZ() { return z; } + + public Point getProjection(Point p) { return this; } + public AffineConstraint intersect(AffineConstraint c, float epsilon) { + if (c.getProjection(this).distance(this) <= epsilon) return this; + System.err.println("off by: " + c.getProjection(this).distance(this)); + return new AffineConstraint.Nothing(); + } + public AffineConstraint multiply(Matrix m) { return m.times(this); } + }