Esempio n. 1
0
 /** @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;
 }