#include <bits/stdc++.h>
using namespace std;
const double PI = 3.1415926535;
const double esp = 0.01;
struct node {
  double x, y;
  double solen(node a) {
    return sqrt((a.x - x) * (a.x - x) + (a.y - y) * (a.y - y));
  }
};
double dgcd(double a, double b) {
  if (a < esp) return b;
  if (b < esp) return a;
  return dgcd(b, fmod(a, b));
}
int main() {
  node a, b, c;
  double rea, reb, rec, Area;
  double angle[3];
  scanf("%lf%lf%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
  rea = a.solen(b);
  reb = a.solen(c);
  rec = b.solen(c);
  double cc = (rea + reb + rec) / 2.0;
  Area = sqrt(cc * (cc - rea) * (cc - reb) * (cc - rec));
  double rr = rea * reb * rec / (4 * Area);
  angle[0] = asin(std::max(std::min(rea / (2 * rr), 1.0), -1.0)) * 2;
  angle[1] = asin(std::max(std::min(reb / (2 * rr), 1.0), -1.0)) * 2;
  angle[2] = 2 * PI - angle[0] - angle[1];
  double ff = angle[0];
  for (int i = 1; i < 3; i++) ff = dgcd(ff, angle[i]);
  printf("%.6lf\n", (rr * rr * PI * sin(ff)) / ff);
  return 0;
}
