Most existing visible light positioning (VLP) systems assume vertically placed receivers, or estimate the receiver rotations through gyroscopes. Although several recent VLP systems can deal with the arbitrary tilting of the receiver without the additional sensors, the positioning frequency, algorithm efficiency and stability are still to be improved. In this work, we propose a novel positioning and rotation estimation algorithm based on the eigenvalue decomposition of the covariance matrix of light direction vectors. Four or more light-emitting diodes (LEDs) serve as the anchors and three or more tilted photodiodes are equipped on the mobile receiver. The new algorithm's computational complexity only grows linearly with the number of LEDs, and it can distinguish and bypass the local optima by verifying if the objective function reaches its theoretical maximum. We use simulations to reveal the error patterns of the algorithm and build a low-cost prototype to verify its real performance. The measured average positioning error is 1.83 cm and the orientation estimation error is 0.04 rad. The proposed scheme can be used for positioning and navigation that require fast response, low power consumption, low cost, high accuracy and small device size.