/** * 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; }
private static void accNormalVector(Face face, float[] v) { Node na = face.nodeA(); Node nb = face.nodeB(); Node nc = face.nodeC(); float xa = na.x(); float ya = na.y(); float za = na.z(); float xb = nb.x(); float yb = nb.y(); float zb = nb.z(); float xc = nc.x(); float yc = nc.y(); float zc = nc.z(); float x0 = xc-xa; float y0 = yc-ya; float z0 = zc-za; float x1 = xa-xb; float y1 = ya-yb; float z1 = za-zb; v[0] += y0*z1-y1*z0; v[1] += x1*z0-x0*z1; v[2] += x0*y1-x1*y0; } }
/** * Returns the distance squared between the specified node and a point * with specified coordinates. */ private static double distanceSquared( Node node, double x, double y, double z) { double dx = x-node.x(); double dy = y-node.y(); double dz = z-node.z(); return dx*dx+dy*dy+dz*dz; }