| 65 | // 60. |
| 66 | template <typename T> |
| 67 | T Approach(T orig, T target, T amount) { |
| 68 | float absDiff = orig - target; |
| 69 | if (absDiff < static_cast<T>(0)) absDiff = -absDiff; |
| 70 | if (absDiff < amount) { |
| 71 | return target; |
| 72 | } else if (target > orig) { |
| 73 | return orig + amount; |
| 74 | } else { |
| 75 | return orig - amount; |
| 76 | } |
| 77 | } |
| 78 | |
| 79 | template <typename T> |
| 80 | T Abs(T f) { |