Almost
all of the literature that develops and discusses the techniques of 3D graphics
is written in a patois that is, at best, an uncomfortable combination of C++
and geometric linear algebra. This was necessary, but is unfortunate, because
it tends to obscure the interesting themes of this subject by burying them in
the details of implementation. Because of this, it has been difficult for anyone
but seasoned programmers to have immediate access to the fruit of this new technology.
And since the mathematics required to achieve realistic simulations of motion
is difficult to implement at the level of C++, there has been little progress
in creating expressive and versatile 3D simulations for the desktop.
Fortunately,
this situation
has changed. The OpenGL Architecture Review Board has, by abstracting
and separating the issues of quality graphics performance from those of implementation
on a particular platform (or language), taken a very important step towards
making the creation of powerful graphics more accessible to everyone.
Creating
powerful and convincing simulations still requires very careful attention both
to mathematics, and to programming. But in the proper language environment,
it is possible to make the necessary tools available at a conceptual level of
abstraction that integrates the mathematics and the 3D graphics in a natural
way, and encourages top-down planning and design.
MindScapes
is built on an object-oriented paradigm that focuses on “actors” and their behaviors.
These actors are “objects” that you may create and manipulate at a high level
of abstraction. You determine their behaviors with “scripts.” These scripts
are of course programs, but they may be developed incrementally, and may be
tested interactively as you build your project.
This
is important, because it means that your project does not have to be complete
in order to work at all. You may focus attention on details as you get to them,
easily testing and modifying behaviors while the project is running in order
to get them right.
MindScapes
inherits from LISP, Logo and from SmallTalk these insights into the programmer’s
craft. The language that you use to create and manipulate the objects is called
MathScript, and it contains (essentially verbatim) an interactive version of
a large part of OpenGL, as well as a powerful language for creating mathematical
objects and object hierarchies.
This
means that your scripts can also be abstract, focusing on ideas above implementation
details. And we hope that you will find in MathScript a direct route (if not
a Royal Road) to translating your ideas into working simulations.
Mathwright
PlayScapes is the program in which readers view your finished simulations. These
simulations are called Projects and they are saved in special project files.
You may design a hypertext Control Panel on each page of the project for various
forms of input and output that readers will use to interact with your simulations.
These
control panels can have the appearance and interactive functionality of web
pages, but are much easier to design. You may also provide colorful, rich-text
Instructions Pages that may contain pictures (especially snapshots of notable
events in the interaction), videos, interactive spreadsheets, and any ActiveX
controls you wish.
You
may also supply a Session Record, which automatically records sequences of commands
(and their responses) made at the Command Line as a guide for reader interaction,
or for feedback from them.
Needless
to say, it is not enough to have available pretty graphics to build dynamic
and interactive environments that can demonstrate powerful ideas in mathematics
and science. The underlying language that controls the graphics must be smart
and flexible enough to enable you to transform your ideas easily into responsive
and dynamic interactions.
MathScript
is an extensible object-oriented computer algebra language (with over 265 built-in
functions, programs, and commands) that is designed to build simulations. Except
for the OpenGL part, it is the same MathScript in which Mathwright WorkBooks
here at the Library have been written. It is an extensible language. You may
create your own programs and commands within it, and even design your own language,
if need be, to support your simulation.
As
an interactive scripting language, it makes it easy for you to design and test
your simulations step-by-step, in small, conceptually simple pieces. The earliest
version of MathScript was developed by James White under the sponsorship of
the Mathematics Association of America, in collaboration with hundreds of college
mathematics and science teachers, during the five year tenure of the Interactive
Mathematics Text Project (funded by IBM Corporation and the National Science
Foundation).
Since
MathScript has no difficulty with symbolic algebra and calculus, it will support
models that require real-time solution of differential equations, or exact solutions
of systems of algebraic equations, and will display the symbolic results in
a legible 2-dimensional symbolic form. And as an object-oriented language, it
will allow you to construct object hierarchies, even extending them at run-time,
to simulate the orchestrated motion of articulated parts of complex 3 dimensional
objects.
OpenGL
is a powerful rendering language that will display your scenes and allow the
user to interact with them in real time. Another aim of MindScapes is to enable
you to learn and to experiment with this remarkable language. For that, MathScript
contains 57 primitive OpenGL commands, all the constants, and the principal
state variables in interactive form. This means that you (and your readers)
may use OpenGL in essentially its original form (its syntax blends seamlessly
with MathScript syntax) to experiment with geometry and graphics interactively.
And
since MathScript is so tightly integrated with OpenGL, it can in fact be an
excellent tool to learn and experiment with OpenGL itself. In its scripts, you
will see the results of your graphics instructions immediately, however, without
the need to compile them into C++. This is a great advantage for building simulations
that must be fine-tuned over many incremental cycles.
But
MathScript is also a highly flexible language that allows you to create your
own commands, to build your own object hierarchies, and to create the mathematical
objects that will support your simulation. What distinguishes MindScapes from
other 3D Graphics environments is the fact that the "actors" in the scenes you
create are dynamic. They may be moved individually either interactively (at
the command line) or under the control of scripts that you write. They may be
selected by the reader when she clicks on them, and may respond in appropriate
ways with the full Euclidean group of motions. Further, the reader may navigate
your scenes by flying through them in the first person, or by moving the entire
scene itself. This makes possible a large variety of realistic experiments and
simulations that it would be difficult to imagine supporting on a 2 dimensional
canvas.
| - James E. White, Ph.D. , Library Director, | ||
| author of this website, Mathwright Author 2000, | ||
| Mathwright MindScapes, and Lava |