title: Consistent normal calculation of a point cloud
body: <p>Is there a library in python or c++ that is capable of estimating normals of point clouds in a consistent way?
  In a consistent way I mean that the orientation of the normals is globally preserved over the surface.</p>
  
  <p>For example, when I use python open3d package:</p>
  
  <blockquote>
  <pre><code>downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
      radius=4, max_nn=300))
  </code></pre>
  </blockquote>
  
  <p>I get an inconsistent results, where some of the normals point inside while the rest point outside.</p>
  
  <p>many thanks<a href="https://i.stack.imgur.com/rfyJw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rfyJw.png" alt="estimated normals (black lines indicate outside directed normals)"></a></p>