More README.md files updated in 2015/

Fix formatting.

Spelling / typo errors fixed.

Possibly other changes as well.

I still have to check 2015/muth and 2015/schweikhardt and 2015/yang.
This commit is contained in:
Cody Boone Ferguson committed 2023-03-25 12:02:26 -07:00
1 parent a23d24f803
commit 35fb326b37
7 files changed
+126 -61

No files matched your search

+59 -25
View File
@@ -1,11 +1,11 @@
# Most Diffused Reaction
Someone Anonymous
Twitter: @hirekoke
Someone Anonymous
Twitter: @hirekoke
Yusuke Endoh
<https://github.com/mame/>
Twitter: @mametter
Yusuke Endoh
<https://github.com/mame/>
Twitter: @mametter
# To build:
@@ -21,6 +21,11 @@ make
Connect to port http://localhost:10333 with your browser.
The author said he had no recent version of macOS to test to see if this works
but in 2023 [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) did this
and reported that it works well. He also said he really loved it! Thank you
Cody!
### Try:
```sh
@@ -55,40 +60,55 @@ cc -O3 -std=c99 \
```
Then, run it under `tcpserver` command in
[ucspi-tcp](http://cr.yp.to/ucspi-tcp.html) package, which was created by Daniel
J. Bernstein, IOCCC 1989 "Best of Show" winner.
[ucspi-tcp](http://cr.yp.to/ucspi-tcp.html) package, which was created by
[Daniel J. Bernstein](/winners.html#Daniel_J._Bernstein), [IOCCC 1991 "Best of
Show"](../../1991/brnstnd/brnstnd.c) ([README.md](../../1991/brnstnd/README.md)).
$ tcpserver -v 127.0.0.1 10333 ./prog ioccc.txt
Finally, open `http://127.0.0.1:10333/` by a modern browser supporting HTML5. You can use the mouse cursor to place drops into the Petri dish interactively.
Finally, open `http://127.0.0.1:10333/` by a modern browser supporting HTML5.
You can use the mouse cursor to place drops into the Petri dish interactively.
### Description
This is a simulator of *reaction-diffusion systems*.
Reaction-diffusion systems, proposed by Alan Turing in [1], are mathematical models in which two chemical substances are transformed into each other (*local chemical reactions*) and spread out (*diffusion*). Their interactions sometimes form non-trivial patterns, such as spots, spiral, dappling, and labyrinths.
Reaction-diffusion systems, proposed by Alan Turing in [1], are mathematical
models in which two chemical substances are transformed into each other (*local
chemical reactions*) and spread out (*diffusion*). Their interactions sometimes
form non-trivial patterns, such as spots, spiral, dappling, and labyrinths.
The systems are generally formulated as follows:
du/dt = F(u, v) + Du * laplacian(u)
dv/dt = G(u, v) + Dv * laplacian(v)
The functions `F(u, v)` and `G(u, v)` represent reactions of each substance, and the parameters `Du` and `Dv` are diffusion coefficients. By changing the functions and parameters, you can see a wide range of behaviors.
The functions `F(u, v)` and `G(u, v)` represent reactions of each substance, and
the parameters `Du` and `Dv` are diffusion coefficients. By changing the
functions and parameters, you can see a wide range of behaviors.
See [the Wikipedia article of "Reaction-diffusion system"](https://en.wikipedia.org/wiki/Reaction%E2%80%93diffusion_system) in detail.
See [the Wikipedia article of "Reaction-diffusion
system"](https://en.wikipedia.org/wiki/Reaction%E2%80%93diffusion_system) in
detail.
This program simulates the systems. The field consists of 128 x 128 cells. Each cell includes infomration of an amount of the two substances, and interacts with neighbor cells (in terms of von Neumann neighborhood) in each frame.
This program simulates the systems. The field consists of 128 x 128 cells.
Each cell includes information of an amount of the two substances, and interacts
with neighbor cells (in terms of von Neumann neighborhood) in each frame.
### Configuration
You can change the model, initial pattern, simulation speed, and color via macro definition.
You can change the model, initial pattern, simulation speed, and color via macro
definition.
#### Model: `-Delta_u=<expression> -Delta_v=<expression>`
The definitions represent the equations of reaction-diffusion system. For example, the following is [the Gray-Scott model](http://groups.csail.mit.edu/mac/projects/amorphous/GrayScott/) in TeX notation.
The definitions represent the equations of reaction-diffusion system. For
example, the following is [the Gray-Scott
model](http://groups.csail.mit.edu/mac/projects/amorphous/GrayScott/) in TeX
notation.
\frac{\partial u}{\partial t} = D_u \Delta u - u v^2 + F (1 - u)
\frac{\partial v}{\partial t} = D_v \Delta v + u v^2 - v (F + K)
@@ -102,9 +122,13 @@ You can specify this model as follows:
#### Initial pattern: `-DUV_BACKGROUND=<u0>,<v0> -DUV_DROP=<u1>,<v1>`
The definitions specifies the initial amount of the two substances u and v. All cells have `(u0, v0)` by default.
The definitions specifies the initial amount of the two substances u and v. All
cells have `(u0, v0)` by default.
You can specify a pattern file when the executable is invoked (not compile-time). The file should include a sequence of points, see `ioccc.txt`, `center.txt`, or `line.txt` as examples. Each amount in cells near to the point included in the file, will be added by `(u1, v1)`.
You can specify a pattern file when the executable is invoked (not
compile-time). The file should include a sequence of points, see `ioccc.txt`,
`center.txt`, or `line.txt` as examples. Each amount in cells near to the point
included in the file, will be added by `(u1, v1)`.
#### Simulation speed: `-DTIMESTEP=ts -DSPEED=spd`
@@ -121,7 +145,8 @@ This specifies a color used for rendering.
### Examples
Some interesting parameters are included in `Makefile`. Do one of the following command and open `http://127.0.0.1:10333`.
Some interesting parameters are included in `Makefile`. Do one of the following
command and open `http://127.0.0.1:10333`.
$ make gray-scott-1 && tcpserver -v 127.0.0.1 10333 ./gray-scott-1 ioccc.txt
$ make gray-scott-1 && tcpserver -v 127.0.0.1 10333 ./gray-scott-1 center.txt
@@ -133,27 +158,32 @@ Some interesting parameters are included in `Makefile`. Do one of the following
$ make fitzhugh-nagumo-2 && tcpserver -v 127.0.0.1 10333 ./fitzhugh-nagumo-2 ioccc.txt
$ make oregonator && tcpserver -v 127.0.0.1 10333 ./oregonator ioccc.txt
These examples are created by drawing (and modifying) the pattern files of [Ready](https://github.com/GollyGang/ready), a cross-platform implementation of various reaction-diffusion systems [2].
These examples are created by drawing (and modifying) the pattern files of
[Ready](https://github.com/GollyGang/ready), a cross-platform implementation of
various reaction-diffusion systems [2].
### Compatibility
#### C part
This program compiles clean with no warnings under `-std=c99 -Wall -Wextra -pedantic`. Since it uses `long long` for 64bit integers, C99 is required.
This program compiles clean with no warnings under `-std=c99 -Wall -Wextra
-pedantic`. Since it uses `long long` for 64bit integers, C99 is required.
#### Browser part
You must use a modern browser that supports the latest specification of WebSocket [3]. All the following browsers worked for me:
You must use a modern browser that supports the latest specification of
WebSocket [3]. All the following browsers worked for me:
* Google Chrome 45
* Mozilla Firefox 39
* Microsoft Internet Explorer 11 (works but sluggish)
I think Safari 6 will work but I haven't tested. (I have no recent os x.)
I think Safari 6 will work but I haven't tested. (I have no recent macOS.)
#### tcpserver alternatives
I think you may use `inetd` and `xinetd` instead of `tcpserver`. Here is an example of inetd configuration.
I think you may use `inetd` and `xinetd` instead of `tcpserver`. Here is an
example of inetd configuration.
10333 stream tcp nowait nobody /path/to/prog /path/to/prog /path/to/initial-pattern.txt
@@ -161,10 +191,14 @@ But note that I didn't test well.
### Internal
1. The C program accepts HTTP connection from the browser, and sends a HTML document.
1. The C program accepts HTTP connection from the browser, and sends a HTML
document.
2. The browser tries to upgrade the connection to WebSocket.
3. The C program accepts WebSocket upgrade. This negotiation process requires SHA1 hash [4] and Base64 encoding [5]. The C program calculates them without the aid of any external libraries.
4. The C program simulates the reaction-diffusion system, and then send the field data to the browser on each frame.
3. The C program accepts WebSocket upgrade. This negotiation process requires
SHA1 hash [4] and Base64 encoding [5]. The C program calculates them without
the aid of any external libraries.
4. The C program simulates the reaction-diffusion system, and then send the
field data to the browser on each frame.
4. The browser receives and renders the field data onto the HTML5 canvas.