Computational design of weingarten surfaces