Optimisation: Collapsed the calculation, added xAtTime() and yAtTime() methods.