Force
|
|
My first year at the U of C in 1991, I was struggling with the analytical aspects
of Physics. I am an intuitionist; I think in terms of pictures and
geometry not in terms of numbers and algebra. In a similar situation, during
my calculus class earlier, I wrote a progam in line number basic that allowed
me to view functions visually (eventually becoming AepGraph).
I decided to see if I could create a program that would allow me to
visualize physics. I had recently started playing with C++ and decided
to write Force in C++ in order to make sure it was as fast as possible.
I worked on the program off and on from 1991 to 1994, leaving the project in its current
state.
Force allows a user to define a set of particles; giving them each a mass,
charge and radius. The system will then, using the law of gravitation,
Coulomb's law and collisions, animate the system showing how the particles will move.
Additionally, for static charges, it will plot electric field lines in 2D and electric
potential in 2D or 3D.
Initially, I developed a method for handling the animations myself, which I later
learned was known as the Modified Euler method. After a suggestion from the
TA of my Chaos class, I got a copy of Numerical Recipies and added Euler, Runge-Kutta 2
and Runge-Kutta 4 numerical solvers to the application.
Force is a DOS based application. My understanding of graphics at the time
was very poor and the application suffers because of it. The biggest problem is
the lack of double buffering which makes the animations of the various systems flicker
intensely. The code itself is comical. I had spent my entire programming life
at this point working with line number basic and the application is for the most
part a single C method.
Initially, the interface was very painful to use. The summer after I graduated in
1994, I spent some time developing a GUI library for DOS applications, which I started to use in Force.
However, I abandoned the library and Force itself when Windows95 came out. I then
spent my time learning to program in Windows and developing AepCalc and AepGraph.
Since, that time I have been meaning to rewrite Force for windows, but have never been
able to get around to it. One of the reasons is that I have long wanted to expand
the application to be much broader in scope. I want to create a universal modeling
application that would allow non-developers to model various physical systems. I also
want the application to handle proofs. To some degree, I think Shazaam is the embryo
of this project. But, obviously, it is ambitious and will take some time.