Skip to content

Commit

Permalink
Merge pull request #29175 from vicliu2001/v3.9.x
Browse files Browse the repository at this point in the history
addressing issue #29156, converted ps to array before slicing
  • Loading branch information
scottshambaugh authored Dec 11, 2024
2 parents 1d7e71e + 3982428 commit 57f7fdf
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/mpl_toolkits/mplot3d/art3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -1218,6 +1218,7 @@ def _generate_normals(polygons):
v2 = np.empty((len(polygons), 3))
for poly_i, ps in enumerate(polygons):
n = len(ps)
ps = np.asarray(ps)
i1, i2, i3 = 0, n//3, 2*n//3
v1[poly_i, :] = ps[i1, :] - ps[i2, :]
v2[poly_i, :] = ps[i2, :] - ps[i3, :]
Expand Down
13 changes: 12 additions & 1 deletion lib/mpl_toolkits/mplot3d/tests/test_art3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import matplotlib.pyplot as plt

from matplotlib.backend_bases import MouseEvent
from mpl_toolkits.mplot3d.art3d import Line3DCollection
from mpl_toolkits.mplot3d.art3d import Line3DCollection, Poly3DCollection


def test_scatter_3d_projection_conservation():
Expand Down Expand Up @@ -54,3 +54,14 @@ def test_zordered_error():
ax.add_collection(Line3DCollection(lc))
ax.scatter(*pc, visible=False)
plt.draw()


def test_generate_normals():
# Smoke test for https://github.com/matplotlib/matplotlib/issues/29156
vertices = ((0, 0, 0), (0, 5, 0), (5, 5, 0), (5, 0, 0))
shape = Poly3DCollection([vertices], edgecolors='r', shade=True)

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.add_collection3d(shape)
plt.draw()

0 comments on commit 57f7fdf

Please sign in to comment.