- float z = p1.norm.dot(p2.norm.cross(p3.norm));
- if (Math.abs(z) == 0) return null; // planes do not intersect at a point
- Vec v1 = p2.norm.cross(p3.norm).times(-1 * p1.dvalue);
- Vec v2 = p3.norm.cross(p1.norm).times(-1 * p2.dvalue);
- Vec v3 = p1.norm.cross(p2.norm).times(-1 * p3.dvalue);
- return Point.ORIGIN.plus(v1.plus(v2).plus(v3).times(1/z));
+ float z = p1.norm().dot(p2.norm().cross(p3.norm()));
+ if (Math.abs(z) < 0.0001) return null; // planes do not intersect at a point
+ Vec v1 = p2.norm().cross(p3.norm()).times(-1 * p1.d);
+ Vec v2 = p3.norm().cross(p1.norm()).times(-1 * p2.d);
+ Vec v3 = p1.norm().cross(p2.norm()).times(-1 * p3.d);
+ return Point.ZERO.plus(v1.plus(v2).plus(v3).times(1/z));
+ }
+
+ public Point getProjection(Point p) {
+ throw new RuntimeException("not implemented yet");
+ }
+
+ public AffineConstraint intersect(AffineConstraint c, float epsilon) {
+ throw new RuntimeException("not implemented yet");