Although the
StageToolspackage has many attractions, it certainly does have its share of shortcomings and misfeatures. Some of these are attributable to the choice of TCL/TK as the underlying language. TCL has a rather unusual syntax, and some aspects of that show up inCenterStageandStageManager. Every effort was made to hide as much of this from the user as possible, but this was not completely successful. For example, the usual way in TCL to set the variablezto be equal to the square ofxminus the square ofyis to writeset z [expr {pow($x,2) - pow($y,2)}]which would be completely unacceptable in a program likeCenterStage. Fixing this required the creation of an expression parser so that we could saylet z = x^2 - y^2instead. This works reasonably well, but since it is not part of TCL's native parser, it is only used by the commands that are defined byCenterStage, not by the other TCL commands. So, for example, one must include the dollar sign in theifcommand:if {$x > 3} {let y = x} else {let y = -x}This schizophrenic syntax is a source of confusion for the inexperienced user. Fortunately, it shows up only when more complicated programming effects are needed.Another problem related to TCL is in its error reporting. For efficiency reasons,
CenterStagedoes not check all the possible input errors itself, but lets TCL catch some problems when they occur. This means that the errors may be at a fairly low level of the code forCenterStage, and so the error message may be uninterpretable by the user, with no clear connection to what he entered in the definition script. This really needs to be improved.The close connection to
Geomviewalso has its problems. The communication channel used betweenGeomviewand its modules is not a very fault-tolerant one: ifGeomviewdetects an error in the format of the data sent from a module, it reports the error, and then refuses to accept any more communication from the module. SinceCenterStagedoes not check all possible error conditions on the data entered by the user, it sometimes sendsGeomviewbad data. Once this occurs, there is no way forCenterStageto communicate further withGeomview, so it can't update or change any of its objects, even after the error has been correct by the user. His only option is to save his work and startCenterStageagain.Also, since
CenterStagerelies onGeomviewto do its graphical display, it inherits any problems thatGeomviewhas, and there are a number of these. For example, some versions ofGeomviewon some platforms do not draw all the outlines on polygons when it is saving an image to a file; thus the frames for a movie might not look exactly the same as they do on screen. Another problem is thatGeomview's n-D viewing mode is buggy. For example, it's normalization and centering is broken, so the user has to rescale the objects by hand. Also, on some platforms (most notably, the X11 version), lighting effects are not applied to the 3D projections of higher-dimensional surfaces (they appear as though theAppearance/Shadingis set toCONSTANTorCSMOOTH). This makes n-D mode virtually unusable on those platforms. Fortunately,CenterStagecan project its high-dimensional objects into 3-space itself, so the objects can be viewed usingGeomview's 3D viewing mode, where lighting works correctly.One final shortcoming is that
StageToolsis a huge project that is maintained by only a single individual in his spare time. This means that updates are slow in coming, and the documentation is never as good as it should be.
|
|