Note
Click here to download the full example code
Computing Surface Normals¶
Compute normals on a surface.
# sphinx_gallery_thumbnail_number = 2
from pyvista import examples
Computing the normals of a surace is quite easy using
pyvista.PolyData
’s compute_normals
method
mesh = examples.download_topo_global()
mesh.plot(cmap="gist_earth", show_scalar_bar=False)

Out:
[(3.8637033051562737, 3.8637033051562737, 3.8637033051562737), (0.0, 0.0, 0.0), (0.0, 0.0, 1.0)]
Now we have a surface dataset of the globe loaded - unfortunately, the
dataset shows the globe with a uniform radius which hides topographic relief.
Using pyvista.PolyData.compute_normals()
, we can compute the normal
vectors on the globe at all points in the dataset, then use the values given
in the dataset to warp the surface in the normals direction to create some
exaggerated topographic relief.
# Compute the normals in-place and use them to warp the globe
mesh.compute_normals(inplace=True) # this activates the normals as well
# Now use those normals to warp the surface
warp = mesh.warp_by_scalar(factor=0.5e-5)
# And let's see it!
warp.plot(cmap="gist_earth", show_scalar_bar=False)

Out:
[(3.8787042765596826, 3.8769314854124506, 3.870459791896673), (0.0005165636539459229, -0.0012562274932861328, -0.007727921009063721), (0.0, 0.0, 1.0)]
Total running time of the script: ( 0 minutes 29.826 seconds)