<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Daniel D. Johnson (Posts about simulation)</title><link>https://www.danieldjohnson.com/</link><description></description><atom:link href="https://www.danieldjohnson.com/categories/simulation.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:daniel.dw.johnson@gmail.com"&gt;Daniel D. Johnson&lt;/a&gt; </copyright><lastBuildDate>Mon, 01 Sep 2025 09:09:05 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>"LEG Processor for Education" at EWME 2016</title><link>https://www.danieldjohnson.com/2016/08/08/leg-processor-for-education-at-ewme-2016/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;Last semester, I was part of the Clay Wolkin Fellowship at Harvey Mudd. The fellowship consists of a group of students (mostly Engineering majors, but some CS also) who work on interesting electrical-engineering-focused projects. The project I worked on was the "LEG Processor", an open-source pipelined processor that implements the ARMv5 instruction set and can boot the Linux kernel (3.19) in simulation. We recently published a paper describing our work in the European Workshop for Microelectronics! You can read the paper &lt;a href="http://dx.doi.org/10.1109/EWME.2016.7496467"&gt;here&lt;/a&gt;. Or read on for a high-level overview of the work I did on the project.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2016/08/08/leg-processor-for-education-at-ewme-2016/"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>circuit</category><category>electronics</category><category>Harvey Mudd College</category><category>project writeup</category><category>research</category><category>simulation</category><guid>https://www.danieldjohnson.com/2016/08/08/leg-processor-for-education-at-ewme-2016/</guid><pubDate>Mon, 08 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Whiteboard Drawing Bot - Part 3: Editor</title><link>https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-3-editor/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;After completing the basic design and software for the whiteboard drawing bot, I decided to make an interactive simulator and shape editor to allow people to generate their own commands. I thought it would be cool to share it as well, in case other people wanted to play with the stroking/filling algorithms or use it to run their own drawing robots or do something else with it entirely.&lt;/p&gt;

&lt;p&gt;For the simulator, I wrote a parser to parse the command sequence, and then animated it drawing the command out onto the screen. The parser is written with PEG.js, which I'll be discussing a bit later. The parameters for the generation and rendering are controlled using &lt;a href="http://workshop.chromeexperiments.com/examples/gui/"&gt;DAT.gui&lt;/a&gt;, and the drawing itself is done using two layered canvases: the bottom one to hold the actual drawing that persists from frame to frame, and the top one to render the arms, which are cleared and redrawn each frame. I separated them because I did not want to have to re-render the entire drawing each time the simulator drew anything new. &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-3-editor/"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>canvas</category><category>javascript</category><category>parsing</category><category>project writeup</category><category>simulation</category><category>Uncategorized</category><guid>https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-3-editor/</guid><pubDate>Mon, 04 Aug 2014 02:47:16 GMT</pubDate></item><item><title>Refraction</title><link>https://www.danieldjohnson.com/2014/06/30/refraction/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;This is an experiment I made recently. It displays the path that light would take when it refracts through variously-shaped objects, color-coded based on the initial angle of emission. In order to do this, it casts a series of rays and uses Snell's law to determine how they refract off of objects. It then iteratively casts more rays between rays that get too far apart or act differently (if one ray hits something and the other hits something else, for instance) to get higher accuracy. The raycasting is performed with JavaScript, and then the light intensity is interpolated between rays in WebGL. 
&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2014/06/30/refraction/"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>canvas</category><category>Experiments</category><category>GLOW</category><category>javascript</category><category>physics</category><category>simulation</category><category>WebGL</category><guid>https://www.danieldjohnson.com/2014/06/30/refraction/</guid><pubDate>Mon, 30 Jun 2014 05:00:38 GMT</pubDate></item></channel></rss>