Topics of this version:
- - camera clipping now uses camera interest correctly. (PvScene)
- - update of camera panel corrected when camera changes. (PvDisplay)
- - jogl continued
Note: Change of camera clipping is incompatible with previous JavaView versions and with previous JVD file. But because of the limited use of camera clipping, we expect minor trouble. Also note, scene clipping is not affected by the change.
New in this version:
- - dialogs of effects contain documentation hints
- - Maple geometries receive a connectivity after parsing
- - optional control grid during subdivision
- - antialiasing of display, shift-s
- - rendering of labels in z-buffer, transparency and texture modes
- - workshops internally have same structure including ability to reset.
- - unfolding does not need to triangulate
PvViewer.stop() no longer null's the current project to circumvent a bug in Netscape 4.xx.
PvViewer.stop() no longer null's the current project to circumvent a bug in Netscape 4.xx.
(beta) Ctrl-k implemented to save the current geometry as a keyframe. This creates an animation and allows to save more keys after the geometry has been modified.
Mark elements now allows to marks elements by dragging a rectangle, which is the standard procedure for marking vertices. Use key 'n' to activate marking of elements, and 'u' to unmark.
New tutorial vgp.tutor.loader implemented which provides a sample implementation of a new loader for an custom geometry file format.
Tutorial on L-Systems enhanced.
Z-buffer mode now uses the new z-buffer algorithm as default. The new z-buffer algorithm now renders points with an own method, and no longer Java drawOval(). This allows to render point clouds with 100k and more vertices at reasonable frame rates.
Computing the Euler characteristic now is an entry in menu INFO.
Html export implemented with new menu entry Export->HTML. Note, the archive javaview.jar must reside in the target directory.
Bug in PwBary removed which prevented the applet PaLIC to work correctly.
Attribute "automatic" of Mathematica SurfaceGraphics is now correctly parsed.
Codebase issue with Netscape 6.1: Models were not loaded in html pages with javaview.class but did load in jvLite.class if the HTML file was below the codebase, e.g. if codebase=../. I removed the codebase setting in javaview.java which took the string value of the codebase given as applet parameter and assigned it to PsConfig. In this case the codebase started with "../" but the Applet.getCodeBase() would have returned something with "http://..". jvLite did not have a problem in Netscape 6 because it did not assign the codebase.
Note, in all other browsers the previous assignment worked correctly.
Strings in PsConfig: The public strings in PsConfig were accidentally modified such that the automatic parser was not able to get the data for _jarVersion.txt. Basically, a tab was introduced were a blank is expected.
Beta release for MTCM CD: Originally it was planned to use this release as version for the MTCM CD.
Flag to show backface of surfaces finally moved from PvDisplay to PgElementSet. Keyboard shortcut shift-r disabled until registration of geometries as key listeners allowed. Flag may be set via menu Method->Show of PgElementSet.
Shortcut Ctrl-Shift-x for emergency exit of JavaView added. This command shuts down a JavaView application without any warning. Applets are destroyed. Shortcut Ctrl-q shuts down JavaView and displays an exit box for confirmation or cancellation.
New menu item in help menu to run java garbage collector. Debug entries for validating frames removed from help menu.
Incompatible change: Listener class jv.project.PgPickEvent renamed to jv.project.PvPickEvent in order to be consistent with corresponding listener class jv.project.PvPickListenerIf. Class jv.project.PgPickEvent is deprecated and will soon be removed.
Solution: Rename all occurrences of PgPickEvent to PvPickEvent.Incompatible change: Integer parameter added to method PgGeometryIf#isConfigurable(). Argument allows to specify a panel type.
Solution: replace previous calls isConfigurable() with isConfigurable(PsObject.HAS_CONFIG_PANEL).Incompatible change: Handling of animations replaced with event model.
Solution:
1. Rename PsDynamicIf to PsTimeListenerIf
2. In implementations if the interface replace header of interface method
public boolean PsDynamicIf.update(double time) {
with
public boolean PsTimeListenerIf.setTime(PsTimeEvent timeEvent) {
double time = timeEvent.getTime();
....
3. Rename registration of a dynamic in an animation
anim.setDynamic(dynamic)
to
anim.addTimeListener(dynamic)
anim.setName(dynamic.getName()) // optional
4. Replace any occurrance of PsAnimationIf with PsAnimation. PsAnimationIf has been removed.
Version 1.28 , 3.10.99 Rootfinder and other minor changed.
Removed: protected boolean m_bShowFrame public jv.geom.PgPointSet#isShowingFrame() public jv.geom.PgPointSet#showFrame(boolean)
"<\!ATTLIST pointSet label (show|hide) "hide">" "<\!ATTLIST pointSet title (show|hide) "hide">"
PdReflect renamed to PuReflect, PdVectorGeom renamed to PuVectorGeom to distinguish both utility classes from container class in package jv.vecmath.
Rootfinder methods implemented and tutorial applet written.
Rootfinder applied to computation of interpolatory discrete PgCatenoid.
Displays no longer request focus automatically, now user must click into display.
Bug removed that maximal value could no be set in slider, only up to max-pageIncr. This seems to be a feature in java.awt.scrollbar, so I set maximal value in scrollbar to max+pageIncr. This does not affect the internal handling in PuDouble and PuInteger and should have no side effects.
Showing of indices of vertices and elements in display implemented.
Mysterious dead lock hopefully removed when to many debug messages where printed.
Handling of grid in display modified to allow editing of grid.
New class for a set of lines and polygons implemented.
Vector field checked to run in 2d too.
Eigenvalue computation in PnJacobi as static methods.
Updated release.
Many static methods from PdVector moved to PuVectorGeom.
Second Release.
Set of inspectors, displays, and update listeners of an object now in a Vector or Hashtable. List of inspectors moved from PvGeometry to list of inspectors of PsObject.
First student version after AWT 1.1 upgrade. Some minor bugs remained.
Handling of multiple displays refined.
New class PgTetraSet in jv.geom created for use with level surfaces.
Texture activated again. Texture was deactivated after multiple geometries were allowed in the display.
New directory structure for applets installed. Applet class and html file now reside in the applet directory rather than the root directory of JavaView. Further, the applets are grouped by topic and by purpose.
Some modifications also made to the structure of the system classes: the applets in the previous vgp.app. package are moved away from the system branch into the applet branch.
New naming: all packages with system classes now belong to package jv, and all applets belong to package vgp. The new structure is accompanied by using two jar resp. cab files instead of one. the file javaview.jar/.cab contains the system classes of JavaView from package jv and the file vgpapp.jar/.cab contains all applets.
Development environment upgraded to Visual J++ 6.0 from previous Visual J++ 1.1. This upgrade is not reversible, and the new Visual J++ 6.0 workspace cannot be opened in Visual J++ 1.1. Currently, JavaView is still Java 1.02 compatible and runs on any browser Netscape 3.02 and later, and Internet Explorer 3.0 and later.
First Release. All student applets included. Still problems with font size not completely check, but which will be resolved in 1.00.
.
New numeric class implemented for matrix operations such as LU, Inv, ...
First beta release for testing.
Conjugation of harmonic maps rewritten for edge based discretizations. Main concern was that conjugating twice shall return the original connectivity.
New class PgVertexStar implemented.
Tackled the problem that control window disappeared to a small panel on some SGI computers when first opened.
Missing notification of project when user interactively deletes geometry in display.
If neighbour became empty, the neighbour list was not sent to viewer, therefore, not deleted there.
Launch of applets takes too long in Netscape. It seems that Netscape need about 0.5 seconds for each class referenced inside the applet to load. I check this by just inserting statements like 'PgElementSet [] es = new PgElementSet[0];' where no instantiation neither initialization of classes is done. But the loading time just depended on the number of different classes I referenced.
So I optimized JavaView to reference as few classes as possible during applet initialization. The number may be further reduced by creating applets which just use the viewer functionality of JavaView, e.g. for applets which just load geometries from file.
Function expressions added to PgSurfaceDescr, and therefore, to the set of classic parameterized surfaces. If user does not modify the expressions, then the Java methods are used to compute function and its derivatives. If user interactively modifies the expressions in the panel then all derivatives are computed by finite differences.
Applet with Kuen surface created. Interface to PgSurfaceDescr harmonized with interface to other functions, i.e. using eval() methods.
For parametrized surfaces allowed to view just a strip of the surface to be able to study parameter lines without seeing the whole surface.
Version for presentation in Sfb H-Kaffee.
New class Keyframe implemented for interpolation between animated geometries having the same connectivity.
Clipping enabled in display.
Loading of geometries from local disk and web optimized. Especially, standalone viewer runs now. Export of OBJ files.
Netscape is very slow at startup on some machines. Therefore, PvControl not created during initialization of PvViewer to speed up loading on slower machines. Additionally, instead of doing all initialization in the init() method of applets, created a thread and put all init() tasks in the run() method of the applet. Done for basic applets PaViewerDemo and PaViewModels since they are usually loaded as one of the first applets. Other applets should not be modified.
Switches like Fog and BndBox removed from display inspector.
Interface jv.object.PvViewerIf added to allow access to PvViewer functionality such as showing/hiding panels from code.
String identifiers for panels in PvControl and PvViewer replaced by integer identifies. Possible values are given in PvViewerIf. This change made it necessary to change the corresponding calls like showPanel("Material") in all applets.
Implement keyboard shortcuts for all panels and many dialogs. F-keys now have a ctrl sequence with the same functionality as cousin since on Macintosh the function keys are sometimes reserved by the user.
.
There appeared a slight bug in the eigenvalue computation which in fact was in PgElementSet: the close() method did (and does) not reset the boundary flag of boundary vertices. In fact, it does not seem reasonable to do it in the close() method, since all the case distinctions.
Therefore, when the boundary is used, the user must care himself about resetting etc. of the boundary flag.
A slight modification of the console:
- the console is now associated and managed by PsDebug:
- PvViewer no longer maintains a pointer to PsConsole.
- The console is automatically opened when an error occurs unless errorFlag==false is set in console.
Handling of animation panel modified. The animation panel is no longer a single panel managed by PvViewer but is now considered similar to an info panel, namely the info panel of PsAnimation.
Since the panel is a java.awt.Dialog and not a subclass of jv.object.PsPanel this slight difference cause the standard automatic generation of infoPanels via PsObject not to work. Therefore, PsAnimation handles the dialog by itself.
The animation panel is no longer started in PvViewer. E.g. previously, each newly selected project with an animation got the animation panel associated.
Discrete Catenoid implemented as class and applet.
PjBuild was completely similar to PjImportModel. Both merged and PjBuild removed. PjImportModel with small panel equipped which allows to start PjImportModel_Dialog as a file browser.
Funny error: I was not able to use method PjImportModel.setFileName() in PjImportModel_Dialog. Compiler complained with error message that method is unknown in PjImportModel. No clue what is going on!
Mark and Unmark of vertices enabled in PvDisplay. PvGeometry forwards tagging information to its associated geometry.
Method toString() and toShortString() improved for classes in jv.vecmath. This allowed code reduction in the toString() methods of many geometry classes.
Area functional included. Hessian improved. Eigenvalues and -vectors computed. Display of Eigenvectors as vector fields on the surface.
Hessian for interior points extractet for Dirichlet energy. Different modifications in PnDiriEnergy, PnGradient functionality moved into PnEnergy for Dirichlet.
Autoanimate disabled on default because there where problems on the MAC. But maybe it is related with the suspended-thread-problem mentioned below.
Display of Grid activated. Now exactly one geometry can be used in the background and one in the foreground, similar to an overlay. These geometries are not depthsorted against all other geometries registered in PvDisplay.
Formatted output similar to C-printf to some extend possible using thirdParty.fmt of ACME. This class was and is quite incomplete including bugs but after some modification it does the formatting I want. Added as package jv.thirdParty.fmt.
Method PgElementSet.compress() written to eliminate unused vertices not referenced by elements.
Thread in PvDisplay stopped instead of suspended since Netscape on SGI in the Java console always complains about the risk that suspended threads might lead to a deadlock. In fact, Netscape often hangs after some action in the viewer, so I'll give this a try.
Merge with modified PaSurface package. All Html files moved into applet directory.
Applet PaAnimation created employing "update(double)" and the PgSurface classes.
Animation and Rotation Thread synchronized avoiding update of PvGeometry during paint.
Update bug in PvDisplay_IP removed which caused a loop when new objects where registered in display while info panel was showing.
Select set of visible geometries from list of surfaces registered in display. Hidden bug in class List localized and caught: if there is a double click in a List then event.arg!=null but event.arg!=Integer. On single click, event.arg is of class Integer and gives the position of the click in the list.
PaBuild created based on a project in an old version of Vgp.
Updated surface classes incorporated. Surface classes use 3d-vector and buffer some values.
Orientation in PgElementSet.makeQuadrConn() switched for triangles. Now triangles and rectangles are both counter-clockwise oriented.
PgTube is now subclass of PgElementSet instead of PgPolygon, PaTorusKnot applet created
Set of parameterized surfaces included in applet PaSurface.
Included new versions of PdVector, PdMatrix from Eike with modifications on matrix multiplication.
A number of bugs fixed in the multiple geometry setup of PgProject, PvDisplay, PvViewer, and PvControl. Remove of projects from PvViewer and PvControl made running.
Major enhancement of the display to allow viewing of multiple geometries simultaneously. Paint method from PvGeometry moved into new class PvPaint which maintains the list of registered geometries. Each geometry is still be covered by a PvGeometry class which does the actual painting.
Major packages documented and lots of code smoothing.
PuNumber removed. It was superclass of PuDouble and PuInteger and superfluous after cleaning code of both classes.
Directory ./Source/Applets renamed to ./Source/applets.
Borderlines now possible around PsPanels. Borderline is now default for new class PgProject_IP.
PvCamera revised, camera has now a fixed projection mode defined during initialization. Still some cleaning necessary...
PaOde applet revised.
Applets für Studenten erzeugt, dafür einiges reoorganisiert. Z.B. können Panels aus PvViewer ins Applet gelegt werden.
Profiling with Sun JWS 2.0, Update mechanism tuned.
Menu organization changed, Font Dialog did not work on SGI and NT, now Font = Helvetica tried
New class PsConfig introduced which stores global configuration data.
File and URL IO completely revised. There are still some delicate points which need further work: codeBase is always different when running as applet, as applet in debug mode, or as application. Further I need to check what happens with real URLs. Currently, I append "file:" but there happen to be other protocols in the world like http, ftp, etc. and I should check them too.
Triangulation method for arbitrary polygons. Class PgGeometry.PgUtil created which supplies utility methods such as triangulating a given array of vertices.
Several bugs in PvGeometry.paint() removed. Cleaner distinction between grid and face drawing.
A version between 0.32 and 0.33 tested on Sun Java Workshop 2.0 and Symantec Visual Cafe 2.5. Tested for profiling (Sun) and to make an executable and Jar builder (Visual Cafe).
Menu and submenus for methods included. All handling is done by PgGeometry. Each class "Name" must supply a menu class "Name_Menu.java". Same naming syntax also introduced for info and material panel whose handling was also moved to PgGeometry.
Computing different discrete curvature terms. This made it necessary to check the display of normals, and, for convenience, a method menu. The method menu will be done in the 0.32 release.
Started to write a triangulation routine for polygons, not yet finished.