From 02441b1f6417dd08f9d60d662b383e1e84ce84c6 Mon Sep 17 00:00:00 2001 From: Hirotaka Mizutani <52546+hirotaka@users.noreply.github.com> Date: Sat, 29 Jun 2024 14:15:50 +0900 Subject: [PATCH] chapter 3: fix draw3d method --- Chapter 03/draw3d.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Chapter 03/draw3d.py b/Chapter 03/draw3d.py index a6e19a4..f8371d5 100755 --- a/Chapter 03/draw3d.py +++ b/Chapter 03/draw3d.py @@ -1,3 +1,4 @@ +import numpy as np from math import sqrt, pi import matplotlib import os @@ -8,18 +9,18 @@ from mpl_toolkits.mplot3d.art3d import Poly3DCollection from colors import * -## https://stackoverflow.com/a/22867877/1704140 +## https://stackoverflow.com/a/74122407/1968614 class FancyArrow3D(FancyArrowPatch): def __init__(self, xs, ys, zs, *args, **kwargs): - FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs) + super().__init__((0,0), (0,0), *args, **kwargs) self._verts3d = xs, ys, zs - def draw(self, renderer): + def do_3d_projection(self, renderer=None): xs3d, ys3d, zs3d = self._verts3d - xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M) + xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, self.axes.M) self.set_positions((xs[0],ys[0]),(xs[1],ys[1])) - FancyArrowPatch.draw(self, renderer) + return np.min(zs) class Polygon3D(): def __init__(self, *vertices, color=blue):