From 508b8d51f576d15166b8551382445a65f0ee0c54 Mon Sep 17 00:00:00 2001 From: Mark Zhang Date: Fri, 20 Aug 2021 21:49:49 -0400 Subject: [PATCH] Reapply #308 but return np.array instead of list (#319) --- p5/sketch/Vispy2DRenderer/openglrenderer.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/p5/sketch/Vispy2DRenderer/openglrenderer.py b/p5/sketch/Vispy2DRenderer/openglrenderer.py index 6737d61f..803a6399 100644 --- a/p5/sketch/Vispy2DRenderer/openglrenderer.py +++ b/p5/sketch/Vispy2DRenderer/openglrenderer.py @@ -351,5 +351,10 @@ def cleanup(self): self.fbuffer.delete() def _transform_vertices(self, vertices, local_matrix, global_matrix): - return np.dot(np.dot(vertices, local_matrix.T), global_matrix.T)[:, :3] - + """Applies `local_matrix` then `global_matrix` to `vertices` + """ + product = np.dot(np.dot(vertices, local_matrix.T), global_matrix.T) + # dehomogenize coordinates + # need np.newaxis to broadcast the vector because each row represents a vertex + dehomogenized = product / product[:,3][:,np.newaxis] + return dehomogenized[:,:3] # Return the first three rows of the result