Add an element constructor
This commit is contained in:
parent
ec1911b889
commit
037a0c376f
@ -1,4 +1,3 @@
|
|||||||
use std::collections::BTreeSet; /* DEBUG */
|
|
||||||
use sycamore::prelude::*;
|
use sycamore::prelude::*;
|
||||||
use web_sys::{console, wasm_bindgen::JsValue};
|
use web_sys::{console, wasm_bindgen::JsValue};
|
||||||
|
|
||||||
@ -7,64 +6,52 @@ use crate::{engine, AppState, assembly::{Assembly, Constraint, Element}};
|
|||||||
/* DEBUG */
|
/* DEBUG */
|
||||||
fn load_gen_assemb(assembly: &Assembly) {
|
fn load_gen_assemb(assembly: &Assembly) {
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("gemini_a"),
|
String::from("gemini_a"),
|
||||||
label: String::from("Castor"),
|
String::from("Castor"),
|
||||||
color: [1.00_f32, 0.25_f32, 0.00_f32],
|
[1.00_f32, 0.25_f32, 0.00_f32],
|
||||||
representation: engine::sphere(0.5, 0.5, 0.0, 1.0),
|
engine::sphere(0.5, 0.5, 0.0, 1.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("gemini_b"),
|
String::from("gemini_b"),
|
||||||
label: String::from("Pollux"),
|
String::from("Pollux"),
|
||||||
color: [0.00_f32, 0.25_f32, 1.00_f32],
|
[0.00_f32, 0.25_f32, 1.00_f32],
|
||||||
representation: engine::sphere(-0.5, -0.5, 0.0, 1.0),
|
engine::sphere(-0.5, -0.5, 0.0, 1.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("ursa_major"),
|
String::from("ursa_major"),
|
||||||
label: String::from("Ursa major"),
|
String::from("Ursa major"),
|
||||||
color: [0.25_f32, 0.00_f32, 1.00_f32],
|
[0.25_f32, 0.00_f32, 1.00_f32],
|
||||||
representation: engine::sphere(-0.5, 0.5, 0.0, 0.75),
|
engine::sphere(-0.5, 0.5, 0.0, 0.75)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("ursa_minor"),
|
String::from("ursa_minor"),
|
||||||
label: String::from("Ursa minor"),
|
String::from("Ursa minor"),
|
||||||
color: [0.25_f32, 1.00_f32, 0.00_f32],
|
[0.25_f32, 1.00_f32, 0.00_f32],
|
||||||
representation: engine::sphere(0.5, -0.5, 0.0, 0.5),
|
engine::sphere(0.5, -0.5, 0.0, 0.5)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("moon_deimos"),
|
String::from("moon_deimos"),
|
||||||
label: String::from("Deimos"),
|
String::from("Deimos"),
|
||||||
color: [0.75_f32, 0.75_f32, 0.00_f32],
|
[0.75_f32, 0.75_f32, 0.00_f32],
|
||||||
representation: engine::sphere(0.0, 0.15, 1.0, 0.25),
|
engine::sphere(0.0, 0.15, 1.0, 0.25)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("moon_phobos"),
|
String::from("moon_phobos"),
|
||||||
label: String::from("Phobos"),
|
String::from("Phobos"),
|
||||||
color: [0.00_f32, 0.75_f32, 0.50_f32],
|
[0.00_f32, 0.75_f32, 0.50_f32],
|
||||||
representation: engine::sphere(0.0, -0.15, -1.0, 0.25),
|
engine::sphere(0.0, -0.15, -1.0, 0.25)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,84 +59,68 @@ fn load_gen_assemb(assembly: &Assembly) {
|
|||||||
fn load_low_curv_assemb(assembly: &Assembly) {
|
fn load_low_curv_assemb(assembly: &Assembly) {
|
||||||
let a = 0.75_f64.sqrt();
|
let a = 0.75_f64.sqrt();
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "central".to_string(),
|
"central".to_string(),
|
||||||
label: "Central".to_string(),
|
"Central".to_string(),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: engine::sphere(0.0, 0.0, 0.0, 1.0),
|
engine::sphere(0.0, 0.0, 0.0, 1.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "assemb_plane".to_string(),
|
"assemb_plane".to_string(),
|
||||||
label: "Assembly plane".to_string(),
|
"Assembly plane".to_string(),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: engine::sphere_with_offset(0.0, 0.0, 1.0, 0.0, 0.0),
|
engine::sphere_with_offset(0.0, 0.0, 1.0, 0.0, 0.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "side1".to_string(),
|
"side1".to_string(),
|
||||||
label: "Side 1".to_string(),
|
"Side 1".to_string(),
|
||||||
color: [1.00_f32, 0.00_f32, 0.25_f32],
|
[1.00_f32, 0.00_f32, 0.25_f32],
|
||||||
representation: engine::sphere_with_offset(1.0, 0.0, 0.0, 1.0, 0.0),
|
engine::sphere_with_offset(1.0, 0.0, 0.0, 1.0, 0.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "side2".to_string(),
|
"side2".to_string(),
|
||||||
label: "Side 2".to_string(),
|
"Side 2".to_string(),
|
||||||
color: [0.25_f32, 1.00_f32, 0.00_f32],
|
[0.25_f32, 1.00_f32, 0.00_f32],
|
||||||
representation: engine::sphere_with_offset(-0.5, a, 0.0, 1.0, 0.0),
|
engine::sphere_with_offset(-0.5, a, 0.0, 1.0, 0.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "side3".to_string(),
|
"side3".to_string(),
|
||||||
label: "Side 3".to_string(),
|
"Side 3".to_string(),
|
||||||
color: [0.00_f32, 0.25_f32, 1.00_f32],
|
[0.00_f32, 0.25_f32, 1.00_f32],
|
||||||
representation: engine::sphere_with_offset(-0.5, -a, 0.0, 1.0, 0.0),
|
engine::sphere_with_offset(-0.5, -a, 0.0, 1.0, 0.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "corner1".to_string(),
|
"corner1".to_string(),
|
||||||
label: "Corner 1".to_string(),
|
"Corner 1".to_string(),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: engine::sphere(-4.0/3.0, 0.0, 0.0, 1.0/3.0),
|
engine::sphere(-4.0/3.0, 0.0, 0.0, 1.0/3.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: "corner2".to_string(),
|
"corner2".to_string(),
|
||||||
label: "Corner 2".to_string(),
|
"Corner 2".to_string(),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: engine::sphere(2.0/3.0, -4.0/3.0 * a, 0.0, 1.0/3.0),
|
engine::sphere(2.0/3.0, -4.0/3.0 * a, 0.0, 1.0/3.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
let _ = assembly.try_insert_element(
|
let _ = assembly.try_insert_element(
|
||||||
Element {
|
Element::new(
|
||||||
id: String::from("corner3"),
|
String::from("corner3"),
|
||||||
label: String::from("Corner 3"),
|
String::from("Corner 3"),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: engine::sphere(2.0/3.0, 4.0/3.0 * a, 0.0, 1.0/3.0),
|
engine::sphere(2.0/3.0, 4.0/3.0 * a, 0.0, 1.0/3.0)
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,25 @@ pub struct Element {
|
|||||||
pub index: usize
|
pub index: usize
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Element {
|
||||||
|
pub fn new(
|
||||||
|
id: String,
|
||||||
|
label: String,
|
||||||
|
color: ElementColor,
|
||||||
|
representation: DVector<f64>
|
||||||
|
) -> Element {
|
||||||
|
Element {
|
||||||
|
id: id,
|
||||||
|
label: label,
|
||||||
|
color: color,
|
||||||
|
representation: representation,
|
||||||
|
constraints: create_signal(BTreeSet::default()),
|
||||||
|
index: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Constraint {
|
pub struct Constraint {
|
||||||
pub subjects: (ElementKey, ElementKey),
|
pub subjects: (ElementKey, ElementKey),
|
||||||
@ -92,14 +111,12 @@ impl Assembly {
|
|||||||
|
|
||||||
// create and insert a new element
|
// create and insert a new element
|
||||||
self.insert_element_unchecked(
|
self.insert_element_unchecked(
|
||||||
Element {
|
Element::new(
|
||||||
id: id,
|
id,
|
||||||
label: format!("Sphere {}", id_num),
|
format!("Sphere {}", id_num),
|
||||||
color: [0.75_f32, 0.75_f32, 0.75_f32],
|
[0.75_f32, 0.75_f32, 0.75_f32],
|
||||||
representation: DVector::<f64>::from_column_slice(&[0.0, 0.0, 0.0, 0.5, -0.5]),
|
DVector::<f64>::from_column_slice(&[0.0, 0.0, 0.0, 0.5, -0.5])
|
||||||
constraints: create_signal(BTreeSet::default()),
|
)
|
||||||
index: 0
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user