Schedule of implementation
A. Creation of particles
1.electrons
a.smaller radius - DONE
b.All travelling in change x direction - DONE
c.Collision detection with each other - DONE
d.Collision detection with the protons - DONE (within current model)
e.velocity according to an electric field creating a force creating acceleration - implemented using an acceleration based on the time step
2.protons
a.bigger radius - DONE
b.crystal lattice - DONE
c.Collision detection with the electrons - DONE (using simple model)
d.variable density - inside program, but not user controlled
e.streamlined matrix for easier computing - Not perfect, but good enough
B. Voltage Source - DONE
a.should be controllable by user - Instead it is based on the actual value of I * R.
b.should influence a display giving the resistance and current according to V=IR. Future implementations may allow this by allowing the user to increase acc (the value associated with acceleration)
c.influence acceleration of electrons according to classical or perhaps quantum physics modele - DONE using the classical model
C. Environment
a.stretch out box to more accurately represent a wire-DONE
b.make variables describing box more easily changeable -not entirely necessary, so this version won't include it, but if anyone works on it in the future, it could be nice to see
c.find out what happens in the real world when an electron "hits the wall"- according to the simple classical model, it bounces off. This is how it is done in the program.
d.When a ball hits one end of the wire, recreate it at the other side in order to give the illusion that current is continously entering and leaving the region - DONE
D. Quantum Mechanical model - researched and deemed too complicated for too little effect
a.involves probability locations for electrons
b.will more accurately represent the interactions between electrons and protons
E. Model other types of components than a resistor(not the aim of my project, but possibly for future implementations)
a.Transistor - Roger is doing this now...
b.capacitor - requires work with electric fields
c.inductor - will require looping of wires... most likely too hard to visualize onscreen with multiple looping
d.diodes - very similar to a transistor - could be done together
Well, the project is finally over. I gave my presentation on May 13th, 2003. It went fairly well. Some people from Duke came and I got to show off my program in the cave.
The outline of my program is basically outlined in the checklist above. I create an array for all of the electrons and protons. I initiate the electrons randomly in their positions, colors, and velocities. I then instantiate a lattice of protons which don't move. I move the electrons according to a set acceleration, time since last stopped, velocity, and position. Whenever an electron collides with a proton, the electron stops and acquires a new random velocity. The electron's acceleration time also gets reset to zero.
The user interactivity at this point in time is close to nothing. Future incarnations might include variable resistance and volage. In the current evolution, there is a HUD which displays the voltage, current, and reistance. It would be nice to see in real time how varying resistance and acceleration would affect the current. I say acceleration because voltage is not explicitly defined, but the acceleration constant is.
In order to run the program, it is rather simple. Just type amp. Or use amp -c if you wish to use it in the cave. Once in the program, not much can be done except for zooming in, out and moving around. This is accomplished using the mousing just as in any other Skel program. Inside the program, such variables as the number of electrons, protons, and density of the proton lattice can be changed. Here is an embedded picture of illiAmp.