/** @return */ public WB_Coord getFaceNormal() { if (_halfedge == null) { return null; } // calculate normal with Newell's method HE_Halfedge he = _halfedge; final WB_Vector _normal = new WB_Vector(); HE_Vertex p0; HE_Vertex p1; do { p0 = he.getVertex(); p1 = he.getNextInFace().getVertex(); _normal.addSelf( (p0.yd() - p1.yd()) * (p0.zd() + p1.zd()), (p0.zd() - p1.zd()) * (p0.xd() + p1.xd()), (p0.xd() - p1.xd()) * (p0.yd() + p1.yd())); he = he.getNextInFace(); } while (he != _halfedge); _normal.normalizeSelf(); return _normal; }