diff --git a/engine-proto/alg-test/ConstructionViewer.jl b/engine-proto/ConstructionViewer.jl similarity index 100% rename from engine-proto/alg-test/ConstructionViewer.jl rename to engine-proto/ConstructionViewer.jl diff --git a/engine-proto/alg-test/Engine.Algebraic.jl b/engine-proto/Engine.Algebraic.jl similarity index 100% rename from engine-proto/alg-test/Engine.Algebraic.jl rename to engine-proto/Engine.Algebraic.jl diff --git a/engine-proto/alg-test/Engine.Numerical.jl b/engine-proto/Engine.Numerical.jl similarity index 100% rename from engine-proto/alg-test/Engine.Numerical.jl rename to engine-proto/Engine.Numerical.jl diff --git a/engine-proto/alg-test/Engine.jl b/engine-proto/Engine.jl similarity index 100% rename from engine-proto/alg-test/Engine.jl rename to engine-proto/Engine.jl diff --git a/engine-proto/alg-test/HittingSet.jl b/engine-proto/HittingSet.jl similarity index 100% rename from engine-proto/alg-test/HittingSet.jl rename to engine-proto/HittingSet.jl diff --git a/lang-trials/rust/.gitignore b/lang-trials/rust/.gitignore deleted file mode 100644 index 1d4e644..0000000 --- a/lang-trials/rust/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target/* -dist/* \ No newline at end of file diff --git a/lang-trials/rust/Cargo.toml b/lang-trials/rust/Cargo.toml deleted file mode 100644 index 278a7c3..0000000 --- a/lang-trials/rust/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "sycamore-trial" -version = "0.1.0" -authors = ["Aaron"] -edition = "2021" - -[features] -default = ["console_error_panic_hook"] - -[dependencies] -nalgebra = "0.33.0" -sycamore = "0.9.0-beta.2" - -# The `console_error_panic_hook` crate provides better debugging of panics by -# logging them with `console.error`. This is great for development, but requires -# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for -# code size when deploying. -console_error_panic_hook = { version = "0.1.7", optional = true } - -[dependencies.web-sys] -version = "0.3.69" -features = [ - 'CanvasRenderingContext2d', - 'HtmlCanvasElement', -] - -[dev-dependencies] -wasm-bindgen-test = "0.3.34" - -[profile.release] -# Tell `rustc` to optimize for small code size. -opt-level = "s" diff --git a/lang-trials/rust/index.html b/lang-trials/rust/index.html deleted file mode 100644 index 04a39a0..0000000 --- a/lang-trials/rust/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - Lattice circle - - - - diff --git a/lang-trials/rust/main.css b/lang-trials/rust/main.css deleted file mode 100644 index 7045d73..0000000 --- a/lang-trials/rust/main.css +++ /dev/null @@ -1,50 +0,0 @@ -body { - margin-left: 20px; - margin-top: 20px; - color: #fcfcfc; - background-color: #202020; -} - -input { - color: inherit; - background-color: #020202; - border: 1px solid #606060; - min-width: 40px; - border-radius: 4px; -} - -input.point-1 { - border-color: #ba5d09; -} - -input.point-2 { - border-color: #0e8a06; -} - -input.point-3 { - border-color: #8951fb; -} - -#data-panel { - float: left; - margin-left: 20px; - display: grid; - grid-template-columns: auto auto; - gap: 10px 10px; - width: 120px; -} - -#data-panel > div { - text-align: center; -} - -#result-display { - margin-top: 10px; - font-weight: bold; -} - -canvas { - float: left; - background-color: #020202; - border-radius: 10px; -} \ No newline at end of file diff --git a/lang-trials/rust/src/engine.rs b/lang-trials/rust/src/engine.rs deleted file mode 100644 index 0dbee3f..0000000 --- a/lang-trials/rust/src/engine.rs +++ /dev/null @@ -1,38 +0,0 @@ -use nalgebra::*; - -pub struct Circle { - pub center_x: f64, - pub center_y: f64, - pub radius: f64, -} - -// construct the circle through the points given by the columns of `points` -pub fn circ_thru(points: Matrix2x3) -> Option { - // build the matrix that maps the circle's coefficient vector to the - // negative of the linear part of the circle's equation, evaluated at the - // given points - let neg_lin_part = stack![2.0*points.transpose(), Vector3::repeat(1.0)]; - - // find the quadrdatic part of the circle's equation, evaluated at the given - // points - let quad_part = Vector3::from_iterator( - points.column_iter().map(|v| v.dot(&v)) - ); - - // find the circle's coefficient vector, and from there its center and - // radius - match neg_lin_part.lu().solve(&quad_part) { - None => None, - Some(coeffs) => { - let center_x = coeffs[0]; - let center_y = coeffs[1]; - Some(Circle { - center_x: center_x, - center_y: center_y, - radius: ( - coeffs[2] + center_x*center_x + center_y*center_y - ).sqrt(), - }) - } - } -} \ No newline at end of file diff --git a/lang-trials/rust/src/main.rs b/lang-trials/rust/src/main.rs deleted file mode 100644 index af011a2..0000000 --- a/lang-trials/rust/src/main.rs +++ /dev/null @@ -1,114 +0,0 @@ -use nalgebra::Matrix2x3; -use std::f64::consts::PI as PI; -use sycamore::{prelude::*, rt::{JsCast, JsValue}}; - -mod engine; - -fn main() { - // set up a config option that forwards panic messages to `console.error` - #[cfg(feature = "console_error_panic_hook")] - console_error_panic_hook::set_once(); - - sycamore::render(|| { - let data = [-1.0, 0.0, 0.0, -1.0, 1.0, 0.0].map(|n| create_signal(n)); - let display = create_node_ref(); - - on_mount(move || { - let canvas = display - .get::() - .unchecked_into::(); - let ctx = canvas - .get_context("2d") - .unwrap() - .unwrap() - .dyn_into::() - .unwrap(); - - create_effect(move || { - // center and normalize the coordinate system - let width = canvas.width() as f64; - let height = canvas.height() as f64; - ctx.set_transform(1.0, 0.0, 0.0, -1.0, 0.5*width, 0.5*height).unwrap(); - - // clear the previous frame - ctx.clear_rect(-0.5*width, -0.5*width, width, height); - - // find the resolution - const R_DISP: f64 = 5.0; - let res = width / (2.0*R_DISP); - - // set colors - let highlight_style = JsValue::from("white"); - let grid_style = JsValue::from("#404040"); - let point_fill_styles = ["#ba5d09", "#0e8a06", "#8951fb"]; - let point_stroke_styles = ["#f89142", "#58c145", "#c396fc"]; - - // draw the grid - let r_grid = (R_DISP - 0.01).floor() as i32; - let edge_scr = res * R_DISP; - ctx.set_stroke_style(&grid_style); - for t in -r_grid ..= r_grid { - let t_scr = res * (t as f64); - - // draw horizontal grid line - ctx.begin_path(); - ctx.move_to(-edge_scr, t_scr); - ctx.line_to(edge_scr, t_scr); - ctx.stroke(); - - // draw vertical grid line - ctx.begin_path(); - ctx.move_to(t_scr, -edge_scr); - ctx.line_to(t_scr, edge_scr); - ctx.stroke(); - } - - // find and draw the circle through the given points - let data_vals = data.map(|sig| sig.get()).to_vec(); - let points = Matrix2x3::from_vec(data_vals); - if let Some(circ) = engine::circ_thru(points) { - ctx.begin_path(); - ctx.set_stroke_style(&highlight_style); - ctx.arc( - res * circ.center_x, - res * circ.center_y, - res * circ.radius, - 0.0, 2.0*PI - ).unwrap(); - ctx.stroke(); - } - - // draw the data points - for n in 0..3 { - ctx.begin_path(); - ctx.set_fill_style(&JsValue::from(point_fill_styles[n])); - ctx.set_stroke_style(&JsValue::from(point_stroke_styles[n])); - let ind_x = 2*n; - let ind_y = ind_x + 1; - ctx.arc( - res * data[ind_x].get(), - res * data[ind_y].get(), - 3.0, - 0.0, 2.0*PI - ).unwrap(); - ctx.fill(); - ctx.stroke(); - } - }); - }); - - view! { - canvas(ref=display, width="600", height="600") - div(id="data-panel") { - div { "x" } - div { "y" } - input(type="number", class="point-1", bind:valueAsNumber=data[0]) - input(type="number", class="point-1", bind:valueAsNumber=data[1]) - input(type="number", class="point-2", bind:valueAsNumber=data[2]) - input(type="number", class="point-2", bind:valueAsNumber=data[3]) - input(type="number", class="point-3", bind:valueAsNumber=data[4]) - input(type="number", class="point-3", bind:valueAsNumber=data[5]) - } - } - }); -} \ No newline at end of file