What Is LiveGraphics3D?
LiveGraphics3D is a non-commercial Java 1.1 applet to display and rotate three-dimensional graphics produced by Mathematica in HTML pages. It may be used without charge for any non-commercial purposes. Mathematica is a program for symbolic and numeric mathematics by Wolfram Research, Inc.. Wolfram Research is also responsible for licensing LiveGraphics3D for commercial purposes.
LiveGraphics3D enables all Mathematica users to put almost any three-dimensional graphics computed by Mathematica directly onto a HTML page, such that everyone with a web browser supporting Java 1.1 (e.g. Communicator 4.0 or Internet Explorer 4.0 or higher) can view and interactively rotate the graphics without any additional software.
Additionally LiveGraphics3D is able to show animations, calculate stereo graphics, integrate hyperlinks, and display bitmap backgrounds.
What to Read Next?
In order to learn how to rotate, zoom, strip, and animate graphics displayed by LiveGraphics3D you should read the User Interface section. (A subsection about Trouble Shooting is included.)If you want to use LiveGraphics3D in your own HTML pages, you do not have to know anything about Java programming, as all needed classes are already compiled. However, you have to install the Java archive live.jar on your local computer as described in the Installation section.
The section Converting Graphics with Mathematica gives additional information and tips about producing and converting three-dimensional graphics with Mathematica.
If you have any comments, critisism, bug reports, or ideas concerning this software or its documentation please e-mail me.
Quick Start
In order to view LiveGraphics3D applets you have to use a web browser supporting Java 1.1 (e.g. Communicator 4.0 or Internet Explorer 4.0) and activate Java in the options or preferences menu (if not activated already).
After a LiveGraphics3D applet has successfully initialized itself the following interactions are always supported.
user action | applet reaction |
---|---|
dragging (left mouse button pressed) | rotating about an axis in the picture |
releasing left mouse button while dragging | spinning about an axis in the picture |
SHIFT key pressed plus vertical dragging | zooming |
SHIFT key pressed plus horizontal dragging | rotating about an axis perpendicular to the picture |
CONTROL key pressed plus vertical dragging | changing focal length |
CONTROL key pressed plus horizontal dragging | changing strength of stereo effect |
META (ALT) key (or right mouse button) pressed plus vertical dragging | stripping parts of the graphics |
"o" key | printing parameter settings to the Java console (aka Java messages window) |
"s" key | toggling between single picture, stereo pictures for diverge fusing and stereo pictures for cross fusing |
HOME key | restoring original perspective (no spinning) |
The META key is usually mapped to the ALTERNATE or COMMAND key. However, on some systems it is emulated by the right mouse button. Rotation about an axis perpendicular to the picture is not possible if a rotating background is included.
Several additional interactions are supported for animations.
user action | applet reaction |
---|---|
entering applet region | starting animation |
leaving applet region | stopping animation |
double clicking | stopping or restarting animation |
META (ALT) key (or right mouse button) pressed plus horizontal dragging | switching through frames |
Trouble Shooting
This subsection is about problems possibly appearing when a web page containing a LiveGraphics3D applet is viewed. (Problems with the integration of the LiveGraphics3D applet in your own web pages are discussed in the Trouble Shooting subsection of the Installation section.)
Many problems with LiveGraphics3D (and Java applets in general) can be solved by reloading the applet. In order to do so you have to hold down SHIFT (Netscape) or CONTROL (Internet Explorer) when clicking the reload button (otherwise only the HTML code but not the Java code of the applet is reloaded).
problem | solution |
---|---|
no applet visible (not even a gray box) | Please use a web browser supporting Java and activate Java in the preferences/options menu. |
only a gray box visible (together with a Java error message by the browser) |
If the error message is something about not finding "Live.class",
then you should update your web browser, as Java 1.1 has to be supported.
(Communicator 4.0 (or higher), IE 4.0 (or higher) or any browser using MRJ 2.1
do support Java 1.1.) Otherwise you should reload the web page. |
only initialization picture visible (together with a Java error message by the browser) | Reload the web page. If possible, deactivate the JIT compiler in the preference menu of you browser. |
LiveGraphics3D error message | Make sure to use Java 1.1 (see above). Then deactivate any proxy, restart your web browser and reload the page. If the problem remains, contact the owner of the page. |
special characters not displayed | Unfortunately many popular web browser do not support special characters in Java applets. (Though this was already part of the definition of Java 1.0.) Under MacOS you can use MRJ 2.1 together with IE or iCab. |
remaining problems | Try pressing SHIFT (Netscape) or CONTROL (Internet Explorer) when clicking the reload button and do not interact with the browser while loading the page; empty all caches, deactivate any proxy, and restart your web browser; try different web browsers, operating systems, or machines; ask other people to try the URL on their machine. |
Please report any unsolvable problems with LiveGraphics3D.
Details
This subsection presents some details of the user interface. First the determination of the axis of rotation is described.
The axis of rotation is usually in the plane of the two-dimensional picture and perpendicular to the virtual line you moved with the mouse (starting from the point on which you clicked). The angle of rotation is determined by the length of that line. This allows to view the graphics from all directions. However, the presence of rotating bitmap backgrounds changes this prescription as in this case horizontal dragging will rotate about the fixed vertical axis and vertical dragging about the horizontal axis in the plane of the picture
Pressing SHIFT and dragging vertically will change the value of the parameter MAGNIFICATION. Pressing CONTROL and dragging horizontally will change the parameter STEREO_DISTANCE. (Negative values indicate the need to cross fuse while positive values are appropriate for diverge fusing.) The current settings of MAGNIFICATION, STEREO_DISTANCE and the Graphics3D options ViewPoint and ViewVertical can be printed to the Java console by pressing the "o" key while the mouse cursor is in the region of the Java applet. Web browsers supporting Java should be (and usually are) able to display the Java console. If you are using LiveGraphics3D on your own HTML page, you may copy the line containing MAGNIFICATION or STEREO_DISTANCE into the applet call and/or the settings of ViewPoint and ViewVertical into the Graphics3D definition to use them as initial values. This is probably the best way to find appropriate values for these parameters.
There is no need to install anything in order to view and rotate graphics on other pages using LiveGraphics3D, as your web browser automatically loads and executes the needed Java archive if necessary.
However, in order to use LiveGraphics3D in one of your own web pages you need the Java archive live.jar in the directory of your HTML file. This is like the way pictures are included in web pages: HTML pages contain instructions to load encoded image files and web browsers read, decode and display them. The only difference with a Java archive is that Java code is not displayed but executed!
Quick Start
You should be able to download the Java archive live.jar with your web browser and save it on your local computer. (Usually you will have to press SHIFT when clicking on the link above or click with the right mouse button and save the file as "binary" or "source".) MacOS users should download the BinHex version live.hqx and decode it to live.jar on their local file system.
Note that LiveGraphics3D is free for non-commercial purposes only. Please contact the author if you want to use it for commercial purposes.
After copying live.jar you may start to create HTML pages including LiveGraphics3D applets. The corresponding HTML files should be placed in the same directory as the live.jar file. A complete example follows.
First a file containing the Graphics3D object is needed. Let's call it test.m with the following contents:
Graphics3D[{ (* ...primitives and directives... *) }, BoxRatios->{1,4,9} (* ...options... *)]Then we need an HTML page. Here is a simple example:
<HTML> <APPLET ARCHIVE="live.jar" CODE="Live.class" WIDTH=150 HEIGHT=150 ALIGN=LEFT> <PARAM NAME=BGCOLOR VALUE=#FFFFFF> <PARAM NAME=MAGNIFICATION VALUE=1.> <PARAM NAME=INPUT_FILE VALUE="test.m"> </APPLET> </HTML>
Please note that all texts in quotation marks are case sensitive! (I also recommend to use upper case letters for the NAMEs of PARAMeters, though, lower case letters work with most web browsers.)
If placed in the directory of the Java archive live.jar together with the file test.m on your computer this HTML page should produce the following LiveGraphics3D applet:
If this example works, you might whish to skip the next subsection and jump to the subsection Attributes and Parameters which discusses the attributes and parameters of the LiveGraphics3D APPLET tag or to the section Converting Graphics with Mathematica for informations about converting Graphics3D (and other) objects to an InputForm appropriate for LiveGraphics3D.
Trouble Shooting
If the Java archive does not work as described, it was probably corrupted during the transmission. In this case please empty all caches, disable any proxy, restart your web browser and download the Java archive live.jar again (MacOS users should download live.hqx and decode it on their local file system) and restart your web browser once again, as it might use the corrupted archive otherwise. If this does not solve the problem, you might try to use another web browser or even switch to another operating system if possible. In any case reports of problems are always welcomed.
Attributes and Parameters
The LiveGraphics3D applet can be controlled by setting several attributes and parameters, as demonstrated in the Quick Start subsection. Most of the attributes and parameters are optional, however the attributes ARCHIVE, CODE, WIDTH, and HEIGHT and the parameter INPUT_FILE has to be specified. (The parameter INPUT may be used instead of INPUT_FILE.)
The applet's attributes primarily control how the applet appears within the HTML page. (See the HMTL 4.0 or HTML 3.2 Reference Specification for the official list of attributes.)
attribute | explanation |
---|---|
ALT | alternate text for text-only display |
ALIGN | where to place the applet within the page: LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM . |
ARCHIVE | name of the Java archive, must be "live.jar" for LiveGraphics3D |
CODE | name of the class file, must be "Live.class" for LiveGraphics3D |
CODEBASE | directory name or URL, specifying where to find the class file |
HEIGHT | height of the applet's box in pixels |
HSPACE | space to leave around the applet horizontally |
NAME | name of the applet (not used in LiveGraphics3D) |
VSPACE | space to leave around the applet vertically |
WIDTH | width of the applet's box in pixels |
Apart from these attributes the LiveGraphics3D applet offers additional parameters controling the applet itself. These parameters have to be set with PARAM tags as shown in the Quick Start subsection. (I recommend using upper case letters for the names of these parameters.)
parameter | explanation |
---|---|
AUDIO_ENTER | file name of an audio file (".au" format); played whenever the mouse enters the applet |
AUDIO_LOOP_ENTER | same as AUDIO_ENTER but played in a loop |
AUDIO_FIRST_FRAME | same as AUDIO_ENTER but played whenever the first frame of an animation is displayed |
BACKGROUND | file name of a JPEG or GIF image to be displayed as fixed background |
BGCOLOR | background color in hexadecimal form |
CYLINDRICAL_BACKGROUND | file name of a JPEG or GIF image to be displayed as a cylindrical background |
INITIAL_ROTATION | one angle in degrees (or two angles separated by a comma), specifying an initial rotation or a label for the angle(s) which has to be defined in the reference part of the URL |
INPUT | string containing an InputForm of a Graphics3D or ShowAnimation object enclosed in quotation marks (") |
INPUT_ARCHIVE | name of a zip archive (created for example with the zip program, see Info-ZIP) containing the INPUT_FILE. (INPUT_FILE has to be set to the name of the file inside the zip archive.) |
INPUT_FILE | name of a file containing an InputForm of a Graphics3D or ShowAnimation object. (This file may be inside a zip archive, see INPUT_ARCHIVE.) |
MAGNIFICATION | zoom factor (interactively modified by pressing SHIFT and dragging vertically) (see above) |
POINT_EDGE_COLOR | color for edges of all points in hexadecimal form |
PRELOAD_BACKGROUND | file name of a JPEG or GIF image to be displayed while other files are loaded and parsed |
RIGHT_BACKGROUND | file name of a second background image for the right eye (should have the same size) |
SPHERICAL_BACKGROUND | file name of a JPEG or GIF image to be displayed as a spherical background |
SPIN_X | default spinning velocity about a vertical axis, specified by the corresponding mouse movement in pixels per frame. The frame rate is either 0.05 sec of defined by the AnimationDisplayTime option in an animation. |
SPIN_Y | same as SPIN_X for a default spinning velocity about a horizontal axis. |
STEREO_DISTANCE | distance between the two stereo view points in units of the length of the diagonal of the bounding box (positive values for diverge fusing, negative values for cross fusing; see above) |
VISIBLE_FACES | determines which faces of polygons to draw. (Default is to draw both; the value FRONT will draw only front faces, the value BACK only back faces.) |
By default background images will always be "centered". (ViewPoint will only change the appearance of the Graphics3D object and does not affect the background image; however in the cases of CYLINDRICAL_BACKGROUND and SPHERICAL_BACKGROUND the background can be rotated initially with INITIAL_ROTATION.) There are some restrictions on rotatable images, which are explained on the page of the birds example. Please note: Some web browser do not allow Java applets like LiveGraphics3D to load images from the local file system. (Thus, do not use these web browsers.) If LiveGraphics3D cannot load an image it gets stuck in an endless loop.
If the value of the parameter INITIAL_ROTATION is a label instead of a number, the applet will look in the reference part of the URL (the part following a "#") for a definition of the form "label=number" or "label=number,number". In any case the first number is interpreted as a rotation angle in degrees about a vertical axis, the optional second number defines a rotation about a horizontal axis.In order to display stereo graphics instead of a single picture define STEREO_DISTANCE with an appropriate value (for example with the default value of 0.05).
The production of InputForms of Graphics3D objects within Mathematica is explained in the below.
Interfacing with J/Link (new in version 0.30)
J/Link is a toolkit from Wolfram Research which allows Mathematica users to call Java applets from within Mathematica. Assuming you have installed J/Link correctly and that the file live.jar is in the CLASSPATH the following code will open a new window containing a LiveGraphics3D applet:
g = Graphics3D[Plot3D[Sin[x y], {x, -2, 2}, {y, -2, 2}]]; << JLink` InstallJava[] liveApplet = JavaNew["Live"] liveFrame = JavaNew["com.wolfram.jlink.MathAppletFrame", liveApplet, {"INPUT=" <> ToString[InputForm[g]], "WIDTH=400", "HEIGHT=400"}];
These commands should call the Java interpreter and display the applet in a new window. Converting a Graphics3D object like g is simply done by ToString[InputForm[g]] because the number of digits per number is less important in this context.
You can now control the applet from within Mathematica by calling Java methods. For example, we can change the magnification not only by dragging but also with a Mathematica command:
liveApplet@setMagnification[1.5]
There is a in fact a set of public methods available for controlling the applet. All methods return a boolean, i.e. either True or False indicating whether they were successful or not. Some of the methods are related to parameters of the applet or mouse actions as listed in the table. The syntax of the call within Mathematica is always as in the example above: applet-variable@method-name[values-for-arguments].
method | explanation | parameter/mouse action |
---|---|---|
setGraphics3D(String input_text) | sets a new Graphics3D object | INPUT |
setMagnification(double new_magnification) | sets the magnification factor | MAGNIFICATION, SHIFT + dragging vertically |
setStereoDistance(double new_stereo_distance) | sets the stereo distance (0: no stereo) | STEREO_DISTANCE, CTRL + dragging horizontally |
setStrippedPrimitives(int new_stripped_primitives_count) | sets the number of stripped primitives | ALT + dragging vertically |
setSpin(double new_spin_x, double new_spin_y) | sets the spin velocity | SPIN_X, SPIN_Y |
setViewPointAndViewVertical(double vpx, vpy, vpz, vvx, vvy, vvz) | sets the view point | ViewPoint and ViewVertical option, simple dragging |
setFrame(int new_frame_index) | sets the frame index for animations | ALT + dragging horizontally |
If you want to open several applets, you have to create new instances of both, the Live class and the MathAppletFrame class.
This section is about using Mathematica to convert graphics produced with the help of Mathematica. Therefore, the reader is assumed to have a basic knowledge of Mathematica and the possibility to execute Mathematica commands.
Producing Graphics with Mathematica
There are some built-in commands to produce three-dimensional graphics with Mathematica: Plot3D, ParametricPlot3D and ListPlot3D. Three-dimensional graphics may also be built by combining graphics primitives like Point, Line, Polygon etc. in a Graphics3D object. There are also several standard packages like Graphics`ContourPlot3D`, Graphics`Graphics3D`, Graphics`PlotField3D`, Graphics`Polyhedra`, Graphics`Shapes` or Graphics`SurfaceOfRevolution` with more commands and three-dimensional objects.
Anyway, in many cases a Graphics3D object is produced, which has to be converted into an appropriate InputForm in order to be displayed by LiveGraphics3D. This convertion is explained in the subsection Converting Graphics3D Objects, while the subsection Converting Animations describes the combination of several Graphics3D objects in an animation. Finally the subsection Converting Other Objects discusses how to convert other types of graphical objects of Mathematica into Graphics3D objects. (This covers ContourGraphics, DensityGraphics and SurfaceGraphics.)
In some cases a preprocessing of the Mathematica graphics is appropriate, e.g. when there are intersections of polygons. Together with Eric W. Weisstein I have written a Mathematica package LiveGraphics3D.m which attacks these problems. Eric has also written a small demo for it: LiveGraphics3DDemo.nb.
In general LiveGraphics3D will only be used to display graphics computed by Mathematica. However, the Graphics3D definition for a LiveGraphics3D applet can also be modified (or even created) manually. Additionally LiveGraphics might also be used to find good values for the Graphics3D options ViewPoint and ViewVertical (see above).
Converting Graphics3D Objects
In order to display any Graphics3D, ContourGraphics, DensityGraphics, or SurfaceGraphics object with LiveGraphics3D, it has to be converted into an appropriate InputForm. This is can be done with this function (which also converts lists of Graphics3D objects to animations):
LiveForm[graphics_, animOpts___] := Module[{graphics3d = Switch[graphics, _ContourGraphics, Graphics3D[SurfaceGraphics[graphics]], _DensityGraphics, Graphics3D[SurfaceGraphics[graphics]], _SurfaceGraphics, Graphics3D[graphics], _, graphics]}, Switch[graphics3d, _List, HoldForm[ShowAnimation][NumberForm[InputForm[N[graphics3d]], 5], InputForm[N[Flatten[{animOpts}]]]], _, NumberForm[InputForm[N[graphics3d]], 5]]];
If g is a Graphics3D object (for example returned by ParametricPlot3D) then the InputForm is generated by LiveForm[g]. The result can be pasted into a file, whose name is used as the value of the LiveGraphics3D parameter INPUT_FILE (see the example above).
The value of INPUT_FILE is expected to be the name of a file containing an InputForm of a LiveGraphics3D object. Certainly we can write such a file within Mathematica. Here is a function to do so:
WriteLiveForm[filename_, graphics_, animOpts___] := Module[{ps,x}, ps=Unprotect[Real]; Format[x_Real, InputForm] := OutputForm[NumberForm[x, 5, NumberFormat -> (If[#3 == "", #1, SequenceForm[#1, "*^", #3]] &)]]; Protect@@ps; WriteString[filename, ToString[LiveForm[graphics, animOpts]]]; Close[filename]; ps=Unprotect[Real]; Format[x_Real, InputForm] =.; Protect@@ps;];
If g is again a Graphics3D object then WriteLiveForm["test.m", g] will write an appropriate InputForm of g into a file called test.m in the current directory. (The Mathematica function Directory[] will display the name of the current directory, FileNames[] will list the names of the files in it and SetDirectory["directoy name"] will change it.)
If LiveGraphics3D does not accept an input it will display an error message including the critical part of the InputForm. However all correct Graphics3D objects accepted by Mathematica and converted as described above should work without difficulties.
However, in some cases LiveGraphics3D will not display the graphics in exactly the same way as Mathematica does. All differences and limitations are listed in the appendix Limitations.
Converting Animations
LiveGraphics3D is able to show a list of Graphics3D objects in an animation, while the user may rotate the system. (Therefore animations which just rotate static objects are not very sensible!) The syntax used by LiveGraphics3D is ShowAnimation[gl, opts] with gl being a list of Graphics3D objects and opts a list (or sequence) of Graphics3D options or Mathematica's Cell options AnimationDirection and AnimationDisplayTime. (Lists of Graphics3D objects can be easily produced with the Table command of Mathematica.)
The function LiveForm[gl, opts] from above will produce the needed form; the function WriteLiveForm[filename, gl, opts] from above will write it to a file.
Converting Other Objects
ContourGraphics, DensityGraphics, and SurfaceGraphics have to be converted to Graphics3D objects before they can be used with LiveGraphics3D. This is done automatically by the functions defined above.
The following table includes several standard Mathematica functions, the type of their returned graphics and the command to convert an object called g of this type into a Graphics3D object. (ParametricPlot3D returns Graphics3D objects, thus it is not listed here.)
function | return type | command to convert object g |
---|---|---|
ContourPlot ListContourPlot |
ContourGraphics | Graphics3D[SurfaceGraphics[g]] |
DensityPlot ListDensityPlot |
DensityGraphics | Graphics3D[SurfaceGraphics[g]] |
Plot3D ListPlot3D |
SurfaceGraphics | Graphics3D[g] |
Limitations
This appendix describes most of the limitations of LiveGraphics3D compared to Mathematica.
All kinds of non-decimal numbers are not allowed. This is, however, no problem as all numbers have to be "numeric" anyway, thus it is always possible to use N[...] in order to make things work.
The usage of the Text primitive is quite limited. First of all the first argument has to be a string enclosed in double quotes, e.g. Text["hello", {0,0,0}], or a StyleForm object containing a string enclosed in double quotes, e.g. Text[StyleForm["big hello", FontSize->24], {0,0,0}]. The second argument has to be a three-dimensional point and the optional third argument a two-dimensional point. Following arguments or options are ignored. The following options to StyleForm are supported: FontFamily (should be "Courier", "TimesRoman" or "Helvetica"), FontSize, FontWeight (only "Plain" and "Bold"), FontSlant (only "Plain" and "Italic"), FontColor and Background. Additionally the non-Mathematica option URL might be set to a string containing a URL and therefore changing the text into a hyperlink. Moreover the string ",target=" may be appended followed by a "target" specification (as in the TARGET attribute of the HTML A tag). Here is a real-life example:
Text[StyleForm["Mathematica\.ae", FontFamily->"TimesRoman", FontSlant->"Italic", FontSize->20, URL->"http://www.wolfram.com,target=_self"], {1,1,0}, {0,-1}]
FontForm objects and the option DefaultFont are obsolete in Mathematica 3.0; thus, LiveGraphics3D does not support them.
There is another limitation concerning the primitive Cuboid. In fact it is quite subtle and difficult to explain. In short the following four forms are not supported:
Cuboid[{..., ..., ...}, Scaled[{..., ..., ...}]] Cuboid[Scaled[{..., ... , ...}], {..., ..., ...}] Cuboid[Scaled[{..., ..., ...}], Scaled[{..., ..., ...}, {..., ..., ...}]] Cuboid[Scaled[{..., ..., ...}, {..., ..., ...}], Scaled[{..., ..., ...}]]
More important are the not supported graphics directives:
AbsoluteDashing[...] Dashing[...]
(The scapegoat Java does not support dashed lines.)
Here is the list of ignored options:
AspectRatio | ImageSize | Shading |
ColorOutput | Plot3Matrix | SphericalRegion |
DisplayFunction | PlotRegion | ViewCenter |
Epilog | PolygonIntersections | |
FaceGrids | Prolog | |
FormatType | RenderAll |
These options might be imagined to be set to their default values automatically. With the exception of SphericalRegion which is set to True and ImageSize which is set to the values of the applet's attributes WIDTH and HEIGHT.
If specified the option TextStyle has to be set to a list of font options. (See the remark on StyleForm above.)
LiveGraphics3D does not "break" intersecting polygons, thus they are displayed incorrectly. In fact a quite simple painter algorithm is used to hide surfaces, which is far from being as good as the algorithms used in Mathematica. (Mathematica does offer to do this "breaking" for programs like LiveGraphics3D via the option PolygonIntersections, but it seems to produce always much too many polygons to be of any use.)
LiveGraphics3D does not clip primitives which are outside of the PlotRange.
In some situations the color of the wrong face of a polygon is used. The reason is the simple (but fast) alogrithm being used to decide which face is painted.
The shading is fixed, i.e. light sources are rotating with the graphics. Furthermore there are differences between the shading of Mathematica and LiveGraphics3D concerning the coordinate system in which light sources are defined and the formular for specular shading. There are also differences between Mathematica and its documentation, thus I do not take this point too seriously.
Thickness and PointSize specify lengthes in units of the length of the diagonal of the bounding box (not in units of the width of the whole plot; however with SphericalRegion->True, which is always enforced by LiveGraphics3D, and a not too small ViewPoint vector there is almost no difference). Thus the thickness of lines and the size of points depends on the distance to the spectator, which is quite reasonable for three-dimensional graphics. On the other hand AbsoluteThickness and AbsolutePointSize specify constant lengthes in pixels (not in printer points).
Text primitives may be hidden by other primitives.
PlotLabels appear at the top of the graphics (and not above the graphics). The value is restricted in the same way as the first argument of the Text primitive. (See above.)
There are some other small syntactical differences. For example EdgeForm is not allowed to have more than one argument (as documented in the Mathematica Book), while Mathematica seems to accept any number of arguments.
Revision History
This project was started on August 8th, 1997 as "Live.java". It was renamed to LiveGraphics3D with version -2.02. All changes since version -2.00 are listed here.
version | new |
---|---|
-1.90 |
improved calculation of normals of polygons scanning of integers with integer arithmetic FaceForm with one argument |
-1.80 |
improved PlotRange implemented ShowAnimation incompatible change of MAGNIFICATION if Ticks or AxesLabel are used |
-1.70 |
animations accelerated double clicking to stop/restart animations default value of AnimationDisplayTime now 0.05 |
-1.60 |
improved double clicking implemented stereo graphics changed effect of CONTROL + horizontal dragging |
-1.55 |
removed problem with first click on animations implemented INITIAL_ROTATION |
-1.54 |
corrected Hue improved drawing of thin lines |
-1.50 | additional default light source |
-1.40 | implemented VISIBLE_FACES |
-1.25 |
implemented spinning including SPIN_X and SPIN_Y improved calculation of normals of polygons (once again) implemented identification of lines which are edges of polygons |
-1.00 | implemented AUDIO_... parameters |
-0.90 |
implemented PlotLabel improved dragging interface |
-0.75 |
switched to Java 1.1 and Java archive live.jar reimplemented spinning interface implemented INPUT_ARCHIVE added start-up picture |
-0.74 |
improved spinning interface improved work-around for IE applet size bug parameter INPUT is now obsolete |
-0.70 | implemented PRELOAD_BACKGROUND |
0.01 |
implemented third argument of Polygon implemented HOME key improved parsing of real parameters SPIN_X and SPIN_Y are now reals "o" key is printing SPIN_X and SPIN_Y debugged INITIAL_ROTATION implemented stopping |
0.30 |
implemented ",target=" extension of URL option implemented control methods for J/Link INPUT parameter no longer obsolete |
0.50 | included work around for bug in the JIT compiler of the Microsoft Java Virtual Machine |