This is my first post, and I can't be of great help because I am more of a Linux and UNIX guy than an Arduino guy (getting in to it though!).
I once worked for a company that sold golf simulator technology, I designed racing simulators and motion control platforms (nothing too sophisticated), and occasionally had to diagnose the golf simulators.
Here is a brief description of what I remember the system looking like:
There were three bars of sensors, two about four inches apart from one another and a third about a foot ahead like this..
___Sensor Bar 3___
___Sensor Bar 2___
___Sensor Bar 1___
Bar 1 and 2 were light sensors, we had a bright light above them so when you swung your golf club it would break the connection and report, this would determine your swing speed and angle, the third bar was for putting because bar 1 and 2 worked in conjunction with a microphone system and an absorbent screen to measure the speed of the ball using trilateration(triangulation? sp?). I know that it used basic serial, the data was very small, and it was actually a separate PC that ran in DOS. When you hit a ball, the first bar would go off, the second bar would go off, and then the ball would hit the screen. So initial speed, through speed and angle relative to the first sensor bar (both had two rows of two sensors almost the width of a golf ball but a little thinner, I don't know if partial readings happened from the sensors or not), and then a microphone above the screen, and two on either side of the screen that would determine the position of the ball against the screen in relation to your initial sensor bar readings and give you the correct vertical trajectory (after getting the initial horizontal angle from the two sensor bars) and mash it all together. As far as curvature (these simulators didn't measure spin) it had something to do with the angle first created from the two sensor bars, and then some form of interpolation based on the position of the ball on the screen. So (this is an example) if the club face and ball were going at say a 15 degree angle toward the right of the screen, but it hit a few inches right of center of the screen, it would determine the curvature of the hit and continue that curved line based on the two sets of measurements.
I don't know if this was any help but I actually found a post I felt I could contribute to, let me know if you have any questions, my memory is a little rusty but I played with them enough that I should be able to help.
Oh, and this was designed so anyone could use their own clubs and balls without having any special equipment.