package javaforce.gl;
/**
* Represents a plane in 3d space.
*
* @author pquiring
*/
public class GLPlane {
private GLVector3 aux1 = new GLVector3();
private GLVector3 aux2 = new GLVector3();
public GLVector3 normal = new GLVector3();
public float d;
public void set3Points(GLVector3 v1, GLVector3 v2, GLVector3 v3) {
aux1.sub(v1, v2);
aux2.sub(v3, v2);
normal.cross(aux2, aux1);
normal.normalize();
d = -normal.dot(v2);
}
public void setNormalAndPoint(GLVector3 normal, GLVector3 point) {
this.normal.set(normal);
this.normal.normalize();
d = -(this.normal.dot(point));
}
public void setCoefficients(float a, float b, float c, float d) {
// set the normal vector
normal.set(a,b,c);
//compute the lenght of the vector
float l = normal.length();
// normalize the vector
normal.set(a/l,b/l,c/l);
// and divide d by th length as well
this.d = d/l;
}
public float distance(GLVector3 p) {
return (d + normal.dot(p));
}
public void print() {
System.out.println(String.format("GLPlane:%7.3f,%7.3f,%7.3f : %7.3f", normal.v[0], normal.v[1], normal.v[2], d));
}
}