В данный момент Вы двигаетесь правильным путем(наверное только сглаживание лучше не L сделать, а H, перед Math.Truncate), что именно у Вас не получается?