Dynamic positioning of a vessel 10 connected to the seafloor 14 by a riser 12 utilizes a measurement of riser 12 bottom angle combined with a measurement of vessel 10 velocity, optionally obtained from a Doppler log 16. These two signals are combined to produce a single position estimate using an algorithm such as a Kalman filter. Using riser bottom angle only would result in an unstable control system, since the bottom angle lags the vessel motion by a considerable amount and the relationship is non-linear. Using the velocity measurement alone would result in a slow drift of position. The combination of the two eliminates the disadvantages of the individual measurements.