#include<iostream>
#include<cmath>

using namespace std;

struct Point {
    double x, y;
    Point(double x_ = 0, double y_ = 0):x(x_), y(y_) {}
    Point operator-(const Point &p) const { return Point(x - p.x, y - p.y); }
};
istream &operator>>(istream &is, Point &p) {
    return is >> p.x >> p.y;
}
ostream &operator<<(ostream &os, Point &p) {
    return os << '(' << p.x << ", " << p.y << ')';
}

double herons_formula(double a, double b, double c) {
    double s = (a+b+c) / 2.0;
    double S = sqrt((a+b+c)*(b+c-a)*(a+c-b)*(a+b-c)) / 4.0;
    double r = S / s;
    return r;
}

double dist(const Point &a, const Point &b) {
    return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}

double angle(double a, double b, double c) {
    double cosA =  (b*b + c*c - a*a) / (2*b*c);
    return acos(cosA);
}

double f(double r, double A, double B, double C) {
    double nume = r * (1.0 + tan(B/4.0)) * (1.0 + tan(C/4.0));
    double deno = 2.0 * (1.0 + tan(A/4.0));
    return nume / deno;
}

int main() {
    cout.setf(ios::fixed);
    cout.precision(10);
    
    while (true) {
        Point p1, p2, p3;
        cin >> p1 >> p2 >> p3;
        if (p1.x == 0 && p1.y == 0 &&
            p2.x == 0 && p2.y == 0 &&
            p3.x == 0 && p3.y == 0) break;

        double a = dist(p1, p2);
        double b = dist(p2, p3);
        double c = dist(p3, p1);
        double r = herons_formula(a, b, c);

        double A = angle(a, b, c);
        double B = angle(b, a, c);
        double C = angle(c, a, b);

        double r1 = f(r, B, C, A);
        double r2 = f(r, C, A, B);
        double r3 = f(r, A, B, C);

        cout << r1 << " " << r2 << " " << r3 << endl;
    }
    return 0;
}