float radius = height / HEIGHT_RADIUS_RATIO;
List<TreeBranchState> branches = new ArrayList<TreeBranchState>(nbBranches);
for (int i = 0; i < nbBranches; i++) {
branches.add(computeRandomBranchState(radius, height));
}
ConditionalTaskStateFactory taskStateFactory = new ConditionalTaskStateFactory();
ConditionalTaskState photosynthesis = taskStateFactory.createConditionalTaskState(Photosynthesis.class);
ConditionalTaskState aging = taskStateFactory.createConditionalTaskState(Aging.class);
ConditionalTaskState growth = taskStateFactory.createConditionalTaskState(TreeGrowth.class);
TreeTrunkStateFactory trunkStateFactory = new TreeTrunkStateFactory();
TreeTrunkState trunkState = trunkStateFactory.createRandomTreeTrunkState(radius, height);
Tree3DStateFactory tree3DStateFactory = new Tree3DStateFactory();
Tree3DState tree3dState = tree3DStateFactory.createRandomTree3DState(new Tuple3dState(translationVector));