2023-05-10 19:03:28 +00:00
|
|
|
Jam is visualization software for hard-core lattice particle systems. It is
|
|
|
|
designed to explore configurations of particles while enforcing that no two
|
|
|
|
particles overlap.
|
|
|
|
|
|
|
|
**Jam is a work in progress and is nowhere near ready for production.**
|
|
|
|
|
|
|
|
|
|
|
|
# Basic usage
|
|
|
|
|
|
|
|
Run with
|
|
|
|
```bash
|
|
|
|
./src/jam [configuration_file]
|
|
|
|
```
|
|
|
|
where `[configuration_file]` is an optional argument that specifies a file with
|
|
|
|
a list of particle positions that will be loaded on initial execution.
|
|
|
|
|
|
|
|
|
2023-05-10 19:20:48 +00:00
|
|
|
# Dependencies
|
|
|
|
|
|
|
|
Jam is written in Python 3, and uses Kivy to run the GUI.
|
|
|
|
|
|
|
|
|
2023-05-10 19:03:28 +00:00
|
|
|
# User interface
|
|
|
|
|
|
|
|
* `<right-click>`: create a new particle under the mouse pointer (if the
|
|
|
|
particle fits)
|
|
|
|
|
|
|
|
* `<shift><left-click>`: select/unselect multiple particles
|
|
|
|
|
|
|
|
* `<left-click>` and drag: move selected particle(s).
|
|
|
|
|
|
|
|
* `backspace`: delete selected particle(s)
|
|
|
|
|
|
|
|
|
|
|
|
# Commands
|
|
|
|
|
|
|
|
Commands can be executed by typing `:` (similarly to vim).
|
|
|
|
|
|
|
|
* `:q`: exit
|
|
|
|
|
|
|
|
* `:w [path_to_file]`: Write particle configuration to file. This will not
|
|
|
|
overwrite existing files; use `:w!` to overwrite.
|
|
|
|
|
|
|
|
* `:e <path_to_file>`: edit file.
|
|
|
|
|
|
|
|
* `:export <path_to_file>`: Export configuration to LaTeX (using TikZ)
|
|
|
|
|
|
|
|
* `:set color <color_spec>`: Set color of selected particles to
|
|
|
|
`<color_spec>`. The supported format for `<color_spec>` is either `r,g,b`
|
|
|
|
with `r`, `g`, and `b` in [0,1], or one of
|
|
|
|
`red|green|blue|brown|lime|orange|pink|purple|teal|violet|cyan|magenta|yellow|olive|black|darkgray|gray|lightgray|white`.
|
|
|
|
|
|
|
|
* `:set zoom <zoom_level>`: Scale all particles by `<zoom_level>`.
|
|
|
|
|
|
|
|
* `:set grid [on|off]`: Add a visual grid centered on one of the selected
|
|
|
|
particles. The size of the mesh can be specified by passing
|
|
|
|
`:set grid <size_of_mesh>`.
|
|
|
|
|
|
|
|
|
|
|
|
# Current developments
|
|
|
|
|
|
|
|
So far, Jam only supports cross-shaped particles, but work is in progress to
|
|
|
|
support arbitrary shapes consisting of rectangles, circle arcs and triangles
|
|
|
|
(check out the `dev` branch to follow the progress).
|
|
|
|
|
|
|
|
Support for lattice configurations is also ongoing.
|
2023-05-10 19:08:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
# License
|
|
|
|
|
|
|
|
Jam is distributed under the Apache 2.0 License.
|
|
|
|
|
|
|
|
Copyright 2021-2023 Ian Jauslin
|