From 4fbc874cee4951fc21ce1536aebb49c59157e372 Mon Sep 17 00:00:00 2001 From: BruceSherwood Date: Fri, 18 Nov 2022 09:40:46 -0800 Subject: [PATCH] fix sign and pixel_to_world --- vpython/vpython.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/vpython/vpython.py b/vpython/vpython.py index 89b9d9b..3e0dc85 100644 --- a/vpython/vpython.py +++ b/vpython/vpython.py @@ -10,6 +10,11 @@ # vpython provides clock in its namespace clock = time.perf_counter +def sign(x): # for compatibility with Web VPython + if x > 0: return 1 + if x < 0: return -1 + return 0 + import sys from . import __version__, __gs_version__ from ._notebook_helpers import _isnotebook @@ -1851,9 +1856,12 @@ def process_args(self, *args1, **args): col = c rad = r vi = vis + opaq = None cp = {'pos':pt['pos'].value} if 'color' in pt: col = pt['color'] + if 'opacity' in pt: + opaq = pt['opacity'] if 'radius' in pt: rad = pt['radius'] if 'visible' in pt: @@ -1867,6 +1875,9 @@ def process_args(self, *args1, **args): if vi is not None: pt['visible'] = vi cp['visible'] = vi + if opaq is not None: + pt['opacity'] = opaq + cp['opacity'] = opaq pts.append(pt) cps.append(cp) return [pts, cps] @@ -2059,7 +2070,7 @@ def __init__(self,*args1, **args): if 'pos' in args: tpos = args['pos'] del args['pos'] - + super(curveMethods, self).setup(args) if tpos is not None: @@ -3206,7 +3217,14 @@ def lights(self, value): @property def pixel_to_world(self): - return self._pixel_to_world + # Convert number of pixels into distance in real-world coordinates + w = self._width + h = self._height + d = 2*self._range + if w >= h: + return d/h + else: + return d/w @pixel_to_world.setter def pixel_to_world(self, value): raise AttributeError('pixel_to_world is read-only')