#include <bits/stdc++.h>
using namespace std;
const double PI = 3.14159265358979323846264, EP = 0.0001;
int i, j;
double h, p1, p2, _a, _b, _c, d, c[3][2], p[2][3], *ct = new double[2];
double D(double a[2], double b[2]) {
  p1 = abs(a[0] - b[0]);
  p2 = abs(a[1] - b[1]);
  return p1 * p1 + p2 * p2;
}
double *Intersect(double a[3], double b[3]) {
  double *i = new double[2];
  i[0] = -(a[2] * b[1] - a[1] * b[2]) / (a[0] * b[1] - a[1] * b[0]) / 2;
  i[1] = -(a[0] * b[2] - a[2] * b[0]) / (a[0] * b[1] - a[1] * b[0]) / 2;
  return i;
}
double *Center(double a[3], double b[3], double c[3]) {
  for (i = 0; i < 3; i++) {
    p[0][i] = a[i] - b[i];
    p[1][i] = b[i] - c[i];
  }
  return Intersect(p[0], p[1]);
}
double *Eq(double m[2]) {
  double *e = new double[3];
  e[0] = m[0];
  e[1] = m[1];
  e[2] = -(m[0] * m[0] + m[1] * m[1]);
  return e;
}
double Arc(double a[2], double b[2], double c[2]) {
  _a = D(a, c);
  _b = D(b, a);
  _c = D(b, c);
  return acos((_b + _c - _a) / (2 * sqrt(_b * _c)));
}
double Divisor(double a, double b) {
  for (i = 1; i < 999999; i++) {
    d = b / (a / i);
    if (abs(1 - floor(d) / d) <= EP || abs(1 - ceil(d) / d) <= EP) return a / i;
  }
}
int main() {
  for (i = 0; i < 3; i++)
    for (j = 0; j < 2; j++) scanf("%lf", &c[i][j]);
  ct = Center(Eq(c[0]), Eq(c[1]), Eq(c[2]));
  h = Divisor(Divisor(Arc(c[0], ct, c[1]), Arc(c[1], ct, c[2])), 2 * PI);
  printf("%lf", PI / h * D(ct, c[0]) * sin(h));
}
