diff --git a/.forgejo/setup-trunk/action.yaml b/.forgejo/setup-trunk/action.yaml
index 85e8a31..6007527 100644
--- a/.forgejo/setup-trunk/action.yaml
+++ b/.forgejo/setup-trunk/action.yaml
@@ -10,7 +10,7 @@ runs:
using: "composite"
steps:
- run: rustup target add wasm32-unknown-unknown
-
+
# install the Trunk binary to `ci-bin` within the workspace directory, which
# is determined by the `github.workspace` label and reflected in the
# `GITHUB_WORKSPACE` environment variable. then, make the `trunk` command
diff --git a/.forgejo/workflows/continuous-integration.yaml b/.forgejo/workflows/continuous-integration.yaml
index 6b53b3a..f3b0130 100644
--- a/.forgejo/workflows/continuous-integration.yaml
+++ b/.forgejo/workflows/continuous-integration.yaml
@@ -24,6 +24,6 @@ jobs:
# workspace directory (action variable `github.workspace`, environment
# variable `$GITHUB_WORKSPACE`):
- uses: https://code.forgejo.org/actions/checkout@v4
-
+
- uses: ./.forgejo/setup-trunk
- - run: RUSTFLAGS='-D warnings' cargo test
+ - run: RUSTFLAGS='-D warnings' cargo test
\ No newline at end of file
diff --git a/README.md b/README.md
index 16b0d35..3a29eb0 100644
--- a/README.md
+++ b/README.md
@@ -12,11 +12,11 @@ Note that currently this is just the barest beginnings of the project, more of a
### Implementation goals
-* Provide a comfortable, intuitive UI
+* Comfortable, intuitive UI
-* Allow execution in browser (so implemented in WASM-compatible language)
+* Able to run in browser (so implemented in WASM-compatible language)
-* Produce scalable graphics of 3D diagrams, and maybe STL files (or other fabricatable file format) as well
+* Produce scalable graphics of 3D diagrams, and maybe STL files (or other fabricatable file format) as well.
## Prototype
@@ -24,66 +24,44 @@ The latest prototype is in the folder `app-proto`. It includes both a user inter
### Install the prerequisites
-1. Install [`rustup`](https://rust-lang.github.io/rustup/): the officially recommended Rust toolchain manager.
- - It's available on Ubuntu as a [Snap](https://snapcraft.io/rustup).
-2. Call `rustup default stable` to "download the latest stable release of Rust and set it as your default toolchain".
- - If you forget, the `rustup` [help system](https://github.com/rust-lang/rustup/blob/d9b3601c3feb2e88cf3f8ca4f7ab4fdad71441fd/src/errors.rs#L109-L112) will remind you.
-3. Call `rustup target add wasm32-unknown-unknown` to add the [most generic 32-bit WebAssembly target](https://doc.rust-lang.org/nightly/rustc/platform-support/wasm32-unknown-unknown.html).
-4. Call `cargo install wasm-pack` to install the [WebAssembly toolchain](https://rustwasm.github.io/docs/wasm-pack/).
-5. Call `cargo install trunk` to install the [Trunk](https://trunkrs.dev/) web-build tool.
- - In the future, `trunk` can be updated with the same command. (You may need the `--locked` flag if your ambient version of `rustc` does not match that required by `trunk`.)
+1. Install [`rustup`](https://rust-lang.github.io/rustup/): the officially recommended Rust toolchain manager
+ * It's available on Ubuntu as a [Snap](https://snapcraft.io/rustup)
+2. Call `rustup default stable` to "download the latest stable release of Rust and set it as your default toolchain"
+ * If you forget, the `rustup` [help system](https://github.com/rust-lang/rustup/blob/d9b3601c3feb2e88cf3f8ca4f7ab4fdad71441fd/src/errors.rs#L109-L112) will remind you
+3. Call `rustup target add wasm32-unknown-unknown` to add the [most generic 32-bit WebAssembly target](https://doc.rust-lang.org/nightly/rustc/platform-support/wasm32-unknown-unknown.html)
+4. Call `cargo install wasm-pack` to install the [WebAssembly toolchain](https://rustwasm.github.io/docs/wasm-pack/)
+5. Call `cargo install trunk` to install the [Trunk](https://trunkrs.dev/) web-build tool
6. Add the `.cargo/bin` folder in your home directory to your executable search path
- - This lets you call Trunk, and other tools installed by Cargo, without specifying their paths.
- - On POSIX systems, the search path is stored in the `PATH` environment variable.
- - Alternatively, if you don't want to adjust your `PATH`, you can install `trunk` in another directory `DIR` via `cargo install --root DIR trunk`.
+ * This lets you call Trunk, and other tools installed by Cargo, without specifying their paths
+ * On POSIX systems, the search path is stored in the `PATH` environment variable
### Play with the prototype
-1. From the `app-proto` folder, call `trunk serve --release` to build and serve the prototype.
- - The crates the prototype depends on will be downloaded and served automatically.
- - For a faster build, at the expense of a much slower prototype, you can call `trunk serve` without the `--release` flag.
- - If you want to stay in the top-level folder, you can call `trunk serve --config app-proto [--release]` from there instead.
-3. In a web browser, visit one of the URLs listed under the message `INFO 📡 server listening at:`.
- - Touching any file in the `app-proto` folder will make Trunk rebuild and live-reload the prototype.
-4. Press *ctrl+C* in the shell where Trunk is running to stop serving the prototype.
+1. From the `app-proto` folder, call `trunk serve --release` to build and serve the prototype
+ * *The crates the prototype depends on will be downloaded and served automatically*
+ * *For a faster build, at the expense of a much slower prototype, you can call `trunk serve` without the `--release` flag*
+ * *If you want to stay in the top-level folder, you can call `trunk serve --config app-proto [--release]`* from there instead.
+3. In a web browser, visit one of the URLs listed under the message `INFO 📡 server listening at:`
+ * *Touching any file in the `app-proto` folder will make Trunk rebuild and live-reload the prototype*
+4. Press *ctrl+C* in the shell where Trunk is running to stop serving the prototype
### Run the engine on some example problems
-1. Use `sh` to run the script `tools/run-examples.sh`.
- - The script is location-independent, so you can do this from anywhere in the dyna3 repository.
- - The call from the top level of the repository is:
-
- ```bash
- sh tools/run-examples.sh
- ```
- - For each example problem, the engine will print the value of the loss function at each optimization step.
- - The first example that prints is the same as the Irisawa hexlet example from the Julia version of the engine prototype. If you go into `engine-proto/gram-test`, launch Julia, and then execute
-
+1. Go into the `app-proto` folder
+2. Call `./run-examples`
+ * *For each example problem, the engine will print the value of the loss function at each optimization step*
+ * *The first example that prints is the same as the Irisawa hexlet example from the Julia version of the engine prototype. If you go into `engine-proto/gram-test`, launch Julia, and then*
+
```julia
include("irisawa-hexlet.jl")
for (step, scaled_loss) in enumerate(history_alt.scaled_loss)
println(rpad(step-1, 4), " | ", scaled_loss)
end
```
-
- you should see that it prints basically the same loss history until the last few steps, when the lower default precision of the Rust engine really starts to show.
+
+ *you should see that it prints basically the same loss history until the last few steps, when the lower default precision of the Rust engine really starts to show*
### Run the automated tests
-1. Go into the `app-proto` folder.
-2. Call `cargo test`.
-
-### Deploy the prototype
-
-1. From the `app-proto` folder, call `trunk build --release`.
- - Building in [release mode](https://doc.rust-lang.org/cargo/reference/profiles.html#release) produces an executable which is smaller and often much faster, but harder to debug and more time-consuming to build.
- - If you want to stay in the top-level folder, you can call `trunk build --config app-proto --release` from there instead.
-2. Use `sh` to run the packaging script `tools/package-for-deployment.sh`.
- - The script is location-independent, so you can do this from anywhere in the dyna3 repository.
- - The call from the top level of the repository is:
- ```bash
- sh tools/package-for-deployment.sh
- ```
- - This will overwrite or replace the files in `deploy/dyna3`.
-3. Put the contents of `deploy/dyna3` in the folder on your server that the prototype will be served from.
- - To simplify uploading, you might want to combine these files into an archive called `deploy/dyna3.zip`. Git has been set to ignore this path.
+1. Go into the `app-proto` folder
+2. Call `cargo test`
diff --git a/app-proto/Cargo.lock b/app-proto/Cargo.lock
index 731dd84..4f75c45 100644
--- a/app-proto/Cargo.lock
+++ b/app-proto/Cargo.lock
@@ -255,7 +255,6 @@ dependencies = [
"charming",
"console_error_panic_hook",
"dyna3",
- "enum-iterator",
"itertools",
"js-sys",
"lazy_static",
@@ -272,26 +271,6 @@ version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
-[[package]]
-name = "enum-iterator"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016"
-dependencies = [
- "enum-iterator-derive",
-]
-
-[[package]]
-name = "enum-iterator-derive"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "equivalent"
version = "1.0.1"
diff --git a/app-proto/Cargo.toml b/app-proto/Cargo.toml
index d5221a1..1230b47 100644
--- a/app-proto/Cargo.toml
+++ b/app-proto/Cargo.toml
@@ -10,7 +10,6 @@ default = ["console_error_panic_hook"]
dev = []
[dependencies]
-enum-iterator = "2.3.0"
itertools = "0.13.0"
js-sys = "0.3.70"
lazy_static = "1.5.0"
diff --git a/app-proto/Trunk.toml b/app-proto/Trunk.toml
deleted file mode 100644
index 017deba..0000000
--- a/app-proto/Trunk.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[build]
-public_url = "./"
\ No newline at end of file
diff --git a/app-proto/examples/irisawa-hexlet.rs b/app-proto/examples/irisawa-hexlet.rs
index d7dd5fc..0d710ff 100644
--- a/app-proto/examples/irisawa-hexlet.rs
+++ b/app-proto/examples/irisawa-hexlet.rs
@@ -15,9 +15,9 @@ fn main() {
for k in 4..9 {
println!(" {} sun", 1.0 / config[(3, k)]);
}
-
+
// print the completed Gram matrix
print::gram_matrix(&config);
}
print::loss_history(&realization.history);
-}
+}
\ No newline at end of file
diff --git a/app-proto/examples/kaleidocycle.rs b/app-proto/examples/kaleidocycle.rs
index 4a9ad7e..7ca1f97 100644
--- a/app-proto/examples/kaleidocycle.rs
+++ b/app-proto/examples/kaleidocycle.rs
@@ -14,7 +14,7 @@ fn main() {
// print the completed Gram matrix and the realized configuration
print::gram_matrix(&config);
print::config(&config);
-
+
// find the kaleidocycle's twist motion by projecting onto the tangent
// space
const N_POINTS: usize = 12;
@@ -23,10 +23,10 @@ fn main() {
let twist_motion: DMatrix<_> = (0..N_POINTS).step_by(4).flat_map(
|n| [
tangent.proj(&up.as_view(), n),
- tangent.proj(&down.as_view(), n+1),
+ tangent.proj(&down.as_view(), n+1)
]
).sum();
let normalization = 5.0 / twist_motion[(2, 0)];
println!("\nTwist motion:{}", (normalization * twist_motion).to_string().trim_end());
}
-}
+}
\ No newline at end of file
diff --git a/app-proto/examples/point-on-sphere.rs b/app-proto/examples/point-on-sphere.rs
index a73490e..89dee76 100644
--- a/app-proto/examples/point-on-sphere.rs
+++ b/app-proto/examples/point-on-sphere.rs
@@ -6,7 +6,7 @@ use dyna3::engine::{
realize_gram,
sphere,
ConfigNeighborhood,
- ConstraintProblem,
+ ConstraintProblem
};
fn main() {
@@ -25,7 +25,7 @@ fn main() {
);
print::title("Point on a sphere");
print::realization_diagnostics(&realization);
- if let Ok(ConfigNeighborhood { config, .. }) = realization.result {
+ if let Ok(ConfigNeighborhood{ config, .. }) = realization.result {
print::gram_matrix(&config);
print::config(&config);
}
diff --git a/app-proto/examples/three-spheres.rs b/app-proto/examples/three-spheres.rs
index 7901e31..aa5a105 100644
--- a/app-proto/examples/three-spheres.rs
+++ b/app-proto/examples/three-spheres.rs
@@ -5,7 +5,7 @@ use dyna3::engine::{
realize_gram,
sphere,
ConfigNeighborhood,
- ConstraintProblem,
+ ConstraintProblem
};
fn main() {
@@ -14,7 +14,7 @@ fn main() {
&[
sphere(1.0, 0.0, 0.0, 1.0),
sphere(-0.5, a, 0.0, 1.0),
- sphere(-0.5, -a, 0.0, 1.0),
+ sphere(-0.5, -a, 0.0, 1.0)
]
});
for j in 0..3 {
@@ -27,7 +27,7 @@ fn main() {
);
print::title("Three spheres");
print::realization_diagnostics(&realization);
- if let Ok(ConfigNeighborhood { config, .. }) = realization.result {
+ if let Ok(ConfigNeighborhood{ config, .. }) = realization.result {
print::gram_matrix(&config);
}
print::loss_history(&realization.history);
diff --git a/app-proto/index.html b/app-proto/index.html
index c312b51..4fbe52f 100644
--- a/app-proto/index.html
+++ b/app-proto/index.html
@@ -6,7 +6,7 @@
-
+