I’m going to make a shelter that looks like this

I think there is not a simple algorithm to make that as it seems a bit complex.
The first work is to make a global shape of the surface
Then slice this surface with planes at angle like it is represented there


This will give you upper curves
These curves are then offseted on the same plane used for the cut. Offset seems to be variable depending on the shade
The difficult part will be to make the pillars