#include <bits/stdc++.h>
using namespace std;
const double EA = 1e-5;
complex<double> uv(complex<double> a) { return a / abs(a); }
double dot(complex<double> a, complex<double> b) {
  return a.real() * b.real() + a.imag() * b.imag();
}
double cross(complex<double> a, complex<double> b) {
  return a.real() * b.imag() - a.imag() * b.real();
}
double pab(complex<double> a, complex<double> b) {
  return abs(complex<double>(a - b));
}
double x_int(complex<double> a, complex<double> b) {
  return cross(a, b) / (b.imag() - a.imag());
}
complex<double> lin_sp(complex<double> a, complex<double> b, complex<double> c,
                       complex<double> d) {
  complex<double> s = uv(b - a);
  return complex<double>(x_int((c - a) / s, (d - a) / s), 0.0) * s + a;
}
bool eq(complex<double> a, complex<double> b) {
  return fabs(a.real() - b.real()) < fabs(a.real()) * EA &&
         fabs(a.imag() - b.imag()) < fabs(a.imag()) * EA;
}
double x, y;
complex<double> p[3];
complex<double> c, q[4];
double r;
const double PI = 3.1415926535 * 2;
int main() {
  for (int i = 0; i < 3; ++i) {
    scanf("%lf%lf", &x, &y);
    p[i] = complex<double>(x, y);
  }
  q[0] = (p[0] + p[1]) / 2.0;
  q[1] = q[0] + (p[0] - p[1]) * complex<double>(0.0, 1.0);
  q[2] = (p[2] + p[1]) / 2.0;
  q[3] = q[2] + (p[2] - p[1]) * complex<double>(0.0, 1.0);
  c = lin_sp(q[0], q[1], q[2], q[3]);
  for (int i = 0; i < 3; ++i) p[i] -= c;
  r = abs(p[0]);
  for (int i = 3; i < 101; ++i) {
    for (int j = 1; j < i; ++j) {
      if (!eq(p[0] * complex<double>(cos(PI / i * j), sin(PI / i * j)), p[1]))
        continue;
      for (int k = 1; k < i; ++k) {
        if (!eq(p[0] * complex<double>(cos(PI / i * k), sin(PI / i * k)), p[2]))
          continue;
        printf("%.9f\n", r * r * i * sin(PI / i) / 2.0);
        return 0;
      }
    }
  }
  return 0;
}
