There is a new version 2.0.2 of Jupyter VPython, the 3D graphics module (*pip 
install vpython* or *pip install vpython --upgrade*; see vpython.org for 
more details):

* It supports extrusion and 3D text objects.

* There are important improvements to the way compound objects work.

* The axis and up attributes of an object are now always perpendicular to 
each other.

*EXTRUSION AND 3D TEXT*
The extrusion object lets you specify a 2D shape and a path along which to 
extrude that shape. Here is an example and the documentation:
 
    
http://www.glowscript.org/#/user/GlowScriptDemos/folder/Examples/program/Extrusions
    http://www.glowscript.org/docs/VPythonDocs/extrusion.html
    
The text object creates an extrusion of a specified text, making 3D text 
available in a scene. Here is an example and the documentation:

  
 
http://www.glowscript.org/#/user/GlowScriptDemos/folder/Examples/program/BillboardingText
   http://www.glowscript.org/docs/VPythonDocs/text.html

*CHANGES TO COMPOUND OBJECTS*
Working with compound objects in GlowScript 2.1 uncovered some significant 
design issues which later versions of GlowScript addressed. Here are the 
changes to the compound object, which are part of the Jupyter VPython 2.0.2 
release:
 
1) The compound object is now very similar to the box object. In GlowScript 
2.1 (and up till now in Jupyter VPython), the bounding box (size) was 
vector(1,1,1), the actual bounding box was not known, and size could only 
be changed multiplicatively. In later versions of GlowScript the bounding 
box (size) is the actual size of the object, which can be changed by 
setting size to the desired value.
 
2) Now, when you create a compound object, the value of "pos" is set to the 
computed center of the object. If you specify "pos" when creating the 
object, the object is moved so that its center is located at the new 
location.

3) As with other objects such as box or cylinder, changing the axis of an 
extrusion or compound object not only rotates the object but its length 
(size.x) is set equal to the magnitude of the axis vector. Similarly, 
changing the size sets the magnitude of the axis vector to be equal to the 
length (size.x).
 
Here is the documentation on the updated compound object:
 
    http://www.glowscript.org/docs/VPythonDocs/compound.html
    
*AXIS AND UP KEPT PERPENDICULAR TO EACH OTHER*
Jupyter VPython 2.0.2 incorporates changes implemented in GlowScript 2.4 
that fixed a long-standing error in changing "axis" without updating "up" 
to remain perpendicular to axis (and vice versa). The result was that 
rotating an object by continually changing its axis could cause abrupt 
changes in the appearance of the object. This was noticeable only if an 
object had a texture or a compound object lacked symmetry, which is 
presumably why the problem doesn't seem to have been noted for many years.

Here is an example of a program running in GlowScript 2.3 that illustrates 
the problem. Note that "up" doesn't change, and there's a problem when 
"axis" and "up" point in the same direction:

  
 
http://www.glowscript.org/#/user/Bruce_Sherwood/folder/Pub/program/RotatingAxis2.3

Here is the same program running GlowScript 2.4 (or Jupyter VPython 2.0), 
which works properly. Note that "axis" and "up" are always perpendicular to 
each other:

  
 
http://www.glowscript.org/#/user/Bruce_Sherwood/folder/Pub/program/RotatingAxis2.4

For further details, see 

   http://www.glowscript.org/docs/VPythonDocs/box.html

*GLOWSCRIPT VPYTHON CLOSER TO TRUE VPYTHON*
The RapydScript Python-to-JavaScript transpiler used with GlowScript 
VPython now comes closer to handling standard Python syntax, which will 
facilitate moving programs between GlowScript and Juptyer environments. The 
new transpiler is RapydScript-NG, developed by Kovid Goyal. For example, 
among its features is that it provides most of the standard Python string 
methods: capitalize, strip, lstrip, rstrip, islower, isupper, isspace, 
lower, upper, swapcase, center, count, endswith, startswith, find, rfind, 
index, rindex, format, join, ljust, rjust, partition, rpartition, replace, 
split, rsplit, splitlines, and zfill.

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/2485b4f8-f66a-49b6-9ce9-11f084182634%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to