Surface reconstruction from dense scattered points is of great importance in a variety of situations such as reverse engineering for mechanical products, computer vision and of biomedical images from two-dimensional contours. In this paper, the authors present an algorithm to automatically reconstruct triangular grid representation of a surface from scattered points. The source data may include no additional information other than coordinates of the measured points. In the algorithm, tangent plane of the surface at each point is first calculated according to the point and its neighbor points. In an optimized sequence, normal vectors of the tangent planes are oriented to the outside of the surface. Finally, marching cube method is used to output the triangular representation of the surface. The method put forward to calculate the tangent plane not only promotes the efficiency but also improves the reconstruction effect, especially in the boundary areas and/or sharp arrises. The problem of ‘isolated island’ probably encountered in normal vector propagation is settled. The spatial partitioning scheme put forward in the paper greatly improves the efficiency of the algorithm. Results of the examples show that the algorithm is satisfying.