float getRadius() {
        /*
         * cloud radius is a function of it's age.
         * here's the model...
         *
         * volume of rising air, dv ~ constant.
         * decay ~ surface area.
         * dynamic equilibrium, dv = decay, at maturity.
         * dv = 0 at old age.
         */

        float fn;
        if (age <= t_nose) {
            fn = (float) Math.sqrt((double) age / t_nose);
        } else if (age > t_nose && age <= t_nose + t_mature) {
            fn = 1;
        } else if (age > t_mature + t_nose && age <= t_mature + t_nose + t_tail) {
            fn = (float) Math.sqrt(1 - (double) (age - t_mature - t_nose) / t_tail);
        } else {
            fn = 0;
        }
        return fn * maxRadius;
    }