> I made another version that buffers the states of the particles but both versions
appear to only run smoothly only on time steps of 5e-7 seconds or greater (on my laptop).
MDN Web Docs says the
requestAnimationFrame method provides a smoother and more efficient way for animating by calling the animation frame when the
system is ready to paint the frame. Because the frame rate is variable, I thought it would be a good idea to buffer the
states of the particles -- if the browser is busy then the program won't have to compute Euler steps, it will only have to
redraw the canvas. I should do a proper benchmark to compare the two, but for now my guess is that buffering does not help
because requestAnimationFrame() will perform it's call back at a time that is convenient for the browser to compute Euler
steps and redraw the canvas.
Since I uploaded both programs I updated the non-buffered version. I made the code more readable and the code style more consistent. I did a few things to make more efficient loops, like multiplying by fractional numbers instead of dividing by large constants, and replacing division by a square root by exponentiating to the -0.5 power.
> Images of 500 fractals composed into one .gif. This was created using an Nvidia GPU. Each frame in the original .gif is one megapixel and parallelizing the process of creating them by simultaneously computing the colors of many pixels made my little program much faster. See the full size gif.
> LEDs (light emitting diodes) are unlike some other light sources because they cannot be dimmed; they can only be ON or OFF. One way to create the illusion of dimming an LED is to rapidly pulse the light on and off and vary the proportion of time it is ON. This concept is called pulse-width modulation and it exists in all kinds of other electronics as well.
> I programmed a microcontroller to create PWM waves and fade LEDs in a way that makes some interesting patterns. I spent a lot of time thinking and experimenting to make this project work, and my goal for this website was to share some of the things I learned along the way. Microcontrollers seem like something worth sharing because of their utility, and because they are fun. They allow you to control sensors, motors, lights, etc. and make machines interact with their physical environment. But, as I prepare for the fall semester I don't have as much time for websites, so this will do for now.
> Richard Feynman was a theoretical physicist, member of the Manhattan Project, professor, and super genius. This video I found on YouTube was recorded during a lecture of his at Cornell University. My science teachers seldom talk about people and HOW they figured things out, but that's one of the most interesting parts of learning physics. I like to know how someone figured something out, especially when it contradicts beliefs people have had since forever.
> Today NASA launched the Parker Solar Probe. The probe will provide the closest observations of a star in history. Its mission will take it into the outer atmosphere of the sun, the Corona, and make its closest approach in approximately 7 years. The probe will also become the fastest object ever made by humans. Scientists proposed a similar mission in 1958 (the same year NASA was formed) but the necessary technologies did not yet exist.