#include <bits/stdc++.h>
using namespace std;
double a, b, c, r, q, s;
double A, B, C, angel, ans, n;
struct node {
  double x, y;
} piller[3];
double dis(node a, node b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
double fgcd(double a, double b) {
  if (fabs(b - 0) <= (1e-4)) return a;
  if (fabs(a - 0) <= (1e-4)) return b;
  return fgcd(b, fmod(a, b));
}
void init() {
  memset(piller, 0, sizeof(piller));
  for (int i = 0; i < 3; i++) {
    scanf("%lf%lf", &piller[i].x, &piller[i].y);
  }
  a = dis(piller[0], piller[1]);
  b = dis(piller[1], piller[2]);
  c = dis(piller[0], piller[2]);
  q = (a + b + c) / 2;
  s = sqrt(q * (q - a) * (q - b) * (q - c));
  r = a * b * c / (4 * s);
  A = acos(1 - a * a / r / r / 2);
  B = acos(1 - b * b / r / r / 2);
  C = 2 * (acos(-1.0)) - A - B;
}
int main(int argc, char const *argv[]) {
  init();
  ans = (acos(-1.0)) / fgcd(A, fgcd(B, C)) * r * r * sin(fgcd(A, fgcd(B, C)));
  printf("%.8lf\n", ans);
  return 0;
}
