Although the
StageTools
package 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 inCenterStage
andStageManager
. 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 variablez
to be equal to the square ofx
minus the square ofy
is 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 theif
command: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,
CenterStage
does 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
Geomview
also has its problems. The communication channel used betweenGeomview
and its modules is not a very fault-tolerant one: ifGeomview
detects 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. SinceCenterStage
does not check all possible error conditions on the data entered by the user, it sometimes sendsGeomview
bad data. Once this occurs, there is no way forCenterStage
to 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 startCenterStage
again.Also, since
CenterStage
relies onGeomview
to do its graphical display, it inherits any problems thatGeomview
has, and there are a number of these. For example, some versions ofGeomview
on 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/Shading
is set toCONSTANT
orCSMOOTH
). This makes n-D mode virtually unusable on those platforms. Fortunately,CenterStage
can 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
StageTools
is 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.
|
|