1 package edu.berkeley.qfat.geom;
2 import javax.media.opengl.*;
6 // FIXME: could be given by
10 public final float dvalue;
12 public Plane(Point p, Vec norm) {
13 this.norm = norm.norm();
14 this.dvalue = p.x*this.norm.x+p.y*this.norm.y+p.z*this.norm.z;
17 public Point intersect(Plane p1, Plane p2) {
19 float z = p1.norm.dot(p2.norm.cross(p3.norm));
20 if (Math.abs(z) < 0.0001) return null; // planes do not intersect at a point
21 Vec v1 = p2.norm.cross(p3.norm).times(-1 * p1.dvalue);
22 Vec v2 = p3.norm.cross(p1.norm).times(-1 * p2.dvalue);
23 Vec v3 = p1.norm.cross(p2.norm).times(-1 * p3.dvalue);
24 return Point.ZERO.plus(v1.plus(v2).plus(v3).times(1/z));