double w = v/vsum; double xn = n.xp(); double yn = n.yp(); double zn = n.zp(); double dx = x-xn;
double fn = f(n); double xn = n.xp(); double yn = n.yp(); double zn = n.zp(); for (int ig=0; ig<ng; ++ig) {
TetMesh.Node nc = tet.nodeC(); TetMesh.Node nd = tet.nodeD(); double xa = na.xp(), ya = na.yp(), za = na.zp(); double xb = nb.xp(), yb = nb.yp(), zb = nb.zp(); double xc = nc.xp(), yc = nc.yp(), zc = nc.zp(); double xd = nd.xp(), yd = nd.yp(), zd = nd.zp(); Geometry.centerSphere(xp,yp,zp,xb,yb,zb,xc,yc,zc,xd,yd,zd,_ca); Geometry.centerSphere(xp,yp,zp,xa,ya,za,xd,yd,zd,xc,yc,zc,_cb);
private void processTetNabor( double xp, double yp, double zp, double xt, double yt, double zt, TetMesh mesh, TetMesh.Tet ta, TetMesh.Node nb, TetMesh.Node nc, TetMesh.Node nd) { boolean saveFace = true; if (ta!=null && mesh.isMarked(ta)) { ta.centerSphere(_xyz); double xa = _xyz[0]-xp, ya = _xyz[1]-yp, za = _xyz[2]-zp; double xb = nb.xp()-xp, yb = nb.yp()-yp, zb = nb.zp()-zp; double xd = nd.xp()-xp, yd = nd.yp()-yp, zd = nd.zp()-zp; double xc = nc.xp()-xp, yc = nc.yp()-yp, zc = nc.zp()-zp; double xbd = xb+xd, ybd = yb+yd, zbd = zb+zd; double xdc = xd+xc, ydc = yd+yc, zdc = zd+zc; double xcb = xc+xb, ycb = yc+yb, zcb = zc+zb; double xyz = yt*za-ya*zt, yzx = zt*xa-za*xt, zxy = xt*ya-xa*yt; accumulate(nb,xbd*xyz+ybd*yzx+zbd*zxy); accumulate(nd,xdc*xyz+ydc*yzx+zdc*zxy); accumulate(nc,xcb*xyz+ycb*yzx+zcb*zxy); saveFace = false; } if (saveFace) addFace(xp,yp,zp,xt,yt,zt,nb,nc,nd); }
private boolean needTet(double xp, double yp, double zp, TetMesh.Tet tet) { if (tet==null || _mesh.isMarked(tet)) return false; TetMesh.Node na = tet.nodeA(); TetMesh.Node nb = tet.nodeB(); TetMesh.Node nc = tet.nodeC(); TetMesh.Node nd = tet.nodeD(); double xa = na.xp(), ya = na.yp(), za = na.zp(); double xb = nb.xp(), yb = nb.yp(), zb = nb.zp(); double xc = nc.xp(), yc = nc.yp(), zc = nc.zp(); double xd = nd.xp(), yd = nd.yp(), zd = nd.zp(); return Geometry.inSphere(xa,ya,za,xb,yb,zb,xc,yc,zc,xd,yd,zd,xp,yp,zp)>0.0; }
private void addFace( double xp, double yp, double zp, double xr, double yr, double zr, TetMesh.Node na, TetMesh.Node nb, TetMesh.Node nc) { double xa = na.xp(), ya = na.yp(), za = na.zp(); double xb = nb.xp(), yb = nb.yp(), zb = nb.zp(); double xc = nc.xp(), yc = nc.yp(), zc = nc.zp(); Geometry.centerSphere(xp,yp,zp,xa,ya,za,xb,yb,zb,xc,yc,zc,_xyz); double xf = _xyz[0]-xp, yf = _xyz[1]-yp, zf = _xyz[2]-zp; _faceList.add(na,nb,nc,xf,yf,zf,xr,yr,zr); }