public static double area3D(Coordinate a,Coordinate b,Coordinate c){
  double ux=b.x - a.x;
  double uy=b.y - a.y;
  double uz=b.z - a.z;
  double vx=c.x - a.x;
  double vy=c.y - a.y;
  double vz=c.z - a.z;
  double crossx=uy * vz - uz * vy;
  double crossy=uz * vx - ux * vz;
  double crossz=ux * vy - uy * vx;
  double absSq=crossx * crossx + crossy * crossy + crossz * crossz;
  double area3D=Math.sqrt(absSq) / 2;
  return area3D;
}

public static double area3D ( Coordinate a , Coordinate b , Coordinate c ) { double ux = b . x - a . x ; double uy = b . y - a . y ; double uz = b . z - a . z ; double vx = c . x - a . x ; double vy = c . y - a . y ; double vz = c . z - a . z ; double crossx = uy * vz - uz * vy ; double crossy = uz * vx - ux * vz ; double crossz = ux * vy - uy * vx ; double absSq = crossx * crossx + crossy * crossy + crossz * crossz ; double area3D = Math . sqrt ( absSq ) / 2 ; return area3D ; }
computes the 3d area of a triangle . the value computed is alway non - negative .
