docs: @Override
  	public Vector3f getNormal() {
  		Vector3f v = null;
  		if (this.normal!=null) {
  			v = this.normal.get();
  		}
  		if (v==null) {
  			v = new Vector3f();
  			FunctionalVector3D.crossProduct(
  					this.p2.getX() - this.p1.getX(),
  					this.p2.getY() - this.p1.getY(),
  					this.p2.getZ() - this.p1.getZ(),
  					this.p3.getX() - this.p1.getX(),
  					this.p3.getY() - this.p1.getY(),
  					this.p3.getZ() - this.p1.getZ(),
  					v);
  			v.normalize();
  			this.normal = new SoftReference<>(v);
  		}
  		return v;
  	}