Final-state constrained optimal control via a projection operator approach