Not tried this, not sure if this is the best way, but one way I can imagine is to rotate the pointcloud 90 degrees over the x so the fronts are flat on the floor. Then rasterize the pointcloud and use the RasterExtentsCoercer set to Data Extents to find the surrounding polygon. Then rotate back up.
The rotating part is probably labour intensive. You can also create a oriented bounding box, tile this, clip the pointcloud against the tiles, calculate max z using a PointCloudStatisticsCalculator. Then replace tiles with center of tile xy and max z from pointcloud. SpatialSorter to arrange points and LineBuilder to connect the points.
Fun question!