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 |