S curve generation