/** * Computes the circumcenter of this face. * @param c array of circumcenter coordinates {xc,yc,zc}. * @return radius-squared of circumcircle. */ public double centerCircle(double[] c) { double xa = _a._x; double ya = _a._y; double za = _a._z; double xb = _b._x; double yb = _b._y; double zb = _b._z; double xc = _c._x; double yc = _c._y; double zc = _c._z; Geometry.centerCircle3D(xa,ya,za,xb,yb,zb,xc,yc,zc,c); double dx = c[0]-xc; double dy = c[1]-yc; double dz = c[2]-zc; return dx*dx+dy*dy+dz*dz; }
public void testCenterCircle3D() { double[] po = {0.0,0.0,0.0}; Geometry.centerCircle3D(0,1,0, 0,1,1, 0,0,1, assertTrue(po[1]==0.5); assertTrue(po[2]==0.5); Geometry.centerCircle3D(0,0,1, 1,0,1, 1,0,0, assertTrue(po[1]==0.0); assertTrue(po[2]==0.5); Geometry.centerCircle3D(1,0,0, 1,1,0, 0,1,0, Geometry.centerCircle3D(1,1,0, 1,1,1, 1,0,1, assertTrue(po[1]==0.5); assertTrue(po[2]==0.5); Geometry.centerCircle3D(0,1,1, 1,1,1, 1,1,0, assertTrue(po[1]==1.0); assertTrue(po[2]==0.5);
/** * Computes the circumcenter of this face. * @param cc array of circumcenter coordinates {xc,yc,zc}. * @return radius-squared of circumcircle. */ public double centerCircle(double[] cc) { Node na = nodeA(); Node nb = nodeB(); Node nc = nodeC(); double xa = na.x(); double ya = na.y(); double za = na.z(); double xb = nb.x(); double yb = nb.y(); double zb = nb.z(); double xc = nc.x(); double yc = nc.y(); double zc = nc.z(); Geometry.centerCircle3D(xa,ya,za,xb,yb,zb,xc,yc,zc,cc); double xcc = cc[0]; double ycc = cc[1]; double zcc = cc[2]; double dx = xcc-xc; double dy = ycc-yc; double dz = zcc-yc; return dx*dx+dy*dy+dz*dz; }