forked from StudioInfinity/dyna3
feat: add domed configuration for acron 554
This commit is contained in:
parent
0949dc5e8a
commit
a1b7c1fcb0
3 changed files with 582 additions and 29 deletions
|
@ -824,41 +824,41 @@ const_array!(ACRON554_COMMON: (&str, [f64; 3], bool, usize, &str) = [
|
|||
("A_NW", [-0.5, 0.5, 0.], P, 0, ""),
|
||||
("A_SE", [ 0.5, -0.5, 0.], P, 0, ""),
|
||||
("A_SW", [-0.5, -0.5, 0.], P, 0, ""),
|
||||
("Z_E", [ 0.229, -0.002, 0.821], F, 1, "A_NE,A_SE"),
|
||||
("Z_S", [ 0.002, -0.229, 0.821], F, 1, "A_SE,A_SW"),
|
||||
("Z_E", [ 0.229, -0.002, 0.822], F, 1, "A_NE,A_SE"),
|
||||
("Z_S", [ 0.002, -0.229, 0.822], F, 1, "A_SE,A_SW"),
|
||||
("B_NE", [ HPHI, HPHI, RTHPHI], P, 2, "Z_E"),
|
||||
("B_NW", [-HPHI, HPHI, RTHPHI], P, 2, ""),
|
||||
("B_SW", [-HPHI, -HPHI, RTHPHI], P, 2, "Z_S"),
|
||||
("B_SE", [ 0.812, -0.812, 0.89], F, 2, "A_SE,Z_E,Z_S"),
|
||||
("Y_NE", [ 0.11, 0.103, 1.019], F, 3, "B_NE"),
|
||||
("Y_NW", [-0.103, 0.103, 1.02], F, 3, "B_NW"),
|
||||
("Y_SE", [ 0.11, -0.11, 1.017], F, 3, "B_SE"),
|
||||
("Y_SW", [-0.103, -0.11, 1.019], F, 3, "B_SW"),
|
||||
("B_SE", [ 0.812, -0.812, 0.897], F, 2, "A_SE,Z_E,Z_S"),
|
||||
("Y_NE", [ 0.11, 0.104, 1.019], F, 3, "B_NE"),
|
||||
("Y_NW", [-0.104, 0.104, 1.019], F, 3, "B_NW"),
|
||||
("Y_SE", [ 0.11, -0.11, 1.018], F, 3, "B_SE"),
|
||||
("Y_SW", [-0.104, -0.11, 1.019], F, 3, "B_SW"),
|
||||
("C_N", [ 0., 1., RTPHIPH], P, 4, "Y_NE,Y_NW"),
|
||||
("C_W", [-1., 0., RTPHIPH], P, 4, "Y_NW,Y_SW"),
|
||||
("C_E", [ 1.006, -0.006, 1.45], F, 4, "B_NE,B_SE,Y_NE,Y_SE"),
|
||||
("C_S", [ 0.006, -1.006, 1.45], F, 4, "B_SE,B_SW,Y_SE,Y_SW"),
|
||||
("D_NE", [ 0.2, 0.181, 2.011], F, 5, "Y_NE,C_N,C_E"),
|
||||
("D_NW", [-0.181, 0.181, 2.014], F, 5, "Y_NW,C_N,C_W"),
|
||||
("D_SE", [ 0.2, -0.2, 2.009], F, 5, "Y_SE,C_E,C_S"),
|
||||
("D_SW", [-0.181, -0.2, 2.011], F, 5, "Y_SW,C_W,C_S"),
|
||||
("E_N", [ 0.012, 1.055, 2.46], F, 6, "C_N,D_NE,D_NW"),
|
||||
("E_W", [-1.055, -0.012, 2.46], F, 6, "C_W,D_NW,D_SW"),
|
||||
("E_E", [ 1.079, -0.012, 2.447], F, 6, "C_E,D_NE,D_SE"),
|
||||
("E_S", [ 0.012, -1.079, 2.447], F, 6, "C_S,D_SE,D_SW"),
|
||||
("F_NE", [ 0.296, 0.265, 3.003], F, 7, "D_NE,E_N,E_E"),
|
||||
("F_NW", [-0.265, 0.265, 3.007], F, 7, "D_NW,E_N,E_W"),
|
||||
("F_SE", [ 0.296, -0.296, 3.0], F, 7, "D_SE,E_E,E_S"),
|
||||
("F_SW", [-0.265, -0.296, 3.003], F, 7, "D_SW,E_W,E_S"),
|
||||
("C_E", [ 1.003, -0.003, 1.454], F, 4, "B_NE,B_SE,Y_NE,Y_SE"),
|
||||
("C_S", [ 0.003, -1.003, 1.454], F, 4, "B_SE,B_SW,Y_SE,Y_SW"),
|
||||
("D_NE", [ 0.195, 0.186, 2.012], F, 5, "Y_NE,C_N,C_E"),
|
||||
("D_NW", [-0.186, 0.186, 2.012], F, 5, "Y_NW,C_N,C_W"),
|
||||
("D_SE", [ 0.195, -0.195, 2.011], F, 5, "Y_SE,C_E,C_S"),
|
||||
("D_SW", [-0.186, -0.195, 2.012], F, 5, "Y_SW,C_W,C_S"),
|
||||
("E_N", [ 0.005, 1.062, 2.455], F, 6, "C_N,D_NE,D_NW"),
|
||||
("E_W", [-1.063, -0.005, 2.455], F, 6, "C_W,D_NW,D_SW"),
|
||||
("E_E", [ 1.072, -0.005, 2.452], F, 6, "C_E,D_NE,D_SE"),
|
||||
("E_S", [ 0.005, -1.072, 2.452], F, 6, "C_S,D_SE,D_SW"),
|
||||
("F_NE", [ 0.286, 0.275, 3.003], F, 7, "D_NE,E_N,E_E"),
|
||||
("F_NW", [-0.275, 0.275, 3.004], F, 7, "D_NW,E_N,E_W"),
|
||||
("F_SE", [ 0.286, -0.286, 3.003], F, 7, "D_SE,E_E,E_S"),
|
||||
("F_SW", [-0.275, -0.286, 3.003], F, 7, "D_SW,E_W,E_S"),
|
||||
// The following must be in order around the octagon (in some orientation)
|
||||
("G_1", [ 0.517, 1.19, 3.312], F, 8, "E_N,F_NE"),
|
||||
("G_2", [ 1.224, 0.483, 3.304], F, 8, "E_E,F_NE"),
|
||||
("G_4", [ 1.224, -0.517, 3.298], F, 8, "E_E,F_SE"),
|
||||
("G_5", [ 0.517, -1.224, 3.298], F, 8, "E_S,F_SE"),
|
||||
("G_7", [-0.483, -1.224, 3.304], F, 8, "E_S,F_SW"),
|
||||
("G_8", [-1.19, -0.517, 3.312], F, 8, "E_W,F_SW"),
|
||||
("G_10", [-1.19, 0.483, 3.318], F, 8, "E_W,F_NW"),
|
||||
("G_11", [-0.483, 1.19, 3.318], F, 8, "E_N,F_NW"),
|
||||
("G_1", [ 0.506, 1.201, 3.309], F, 8, "E_N,F_NE"),
|
||||
("G_2", [ 1.213, 0.494, 3.307], F, 8, "E_E,F_NE"),
|
||||
("G_4", [ 1.213, -0.506, 3.306], F, 8, "E_E,F_SE"),
|
||||
("G_5", [ 0.506, -1.213, 3.306], F, 8, "E_S,F_SE"),
|
||||
("G_7", [-0.494, -1.213, 3.307], F, 8, "E_S,F_SW"),
|
||||
("G_8", [-1.201, -0.506, 3.309], F, 8, "E_W,F_SW"),
|
||||
("G_10", [-1.201, 0.494, 3.311], F, 8, "E_W,F_NW"),
|
||||
("G_11", [-0.494, 1.201, 3.311], F, 8, "E_N,F_NW"),
|
||||
]);
|
||||
|
||||
const_array!(LEVEL_COLORS: ElementColor = [
|
||||
|
@ -871,6 +871,9 @@ const_array!(LEVEL_COLORS: ElementColor = [
|
|||
[0.25, 0.75, 0.],
|
||||
[0., 0.5, 0.75],
|
||||
[0.25, 0., 1.],
|
||||
[0.6, 0.15, 0.6],
|
||||
[0.9, 0.5, 0.6],
|
||||
[0.85, 0.15, 0.35]
|
||||
]);
|
||||
|
||||
fn load_554aug2(assembly: &Assembly) {
|
||||
|
@ -961,6 +964,37 @@ fn load_554aug2(assembly: &Assembly) {
|
|||
}
|
||||
}
|
||||
|
||||
const_array!(ACRON554_DOME: (&str, [f64; 3], bool, usize, &str) = [
|
||||
// id, coordinates, Pin/Free, level, earlier neighbor IDs.
|
||||
("H_E", [ 0.359, -0.006, 3.161], F, 9, "G_2,G_4"),
|
||||
("H_N", [ 0.005, 0.348, 3.158], F, 9, "G_1,G_11"),
|
||||
("H_S", [ 0.006, 0.359, 3.159], F, 9, "G_5,G_7"),
|
||||
("H_W", [-0.347, -0.005, 3.163], F, 9, "G_8,G_10"),
|
||||
("I_NE", [ 0.507, 0.493, 4.015], F, 10, "G_1,G_2,H_E,H_N"),
|
||||
("I_NW", [-0.493, 0.493, 4.013], F, 10, "G_10,G_11,H_N,H_W"),
|
||||
("I_SE", [ 0.507, -0.507, 4.012], F, 10, "G_4,G_5,H_E,H_S"),
|
||||
("I_SW", [-0.493, -0.507, 4.015], F, 10, "G_7,G_8,H_S,H_W"),
|
||||
("J", [ 0.004, -0.010, 3.303], F, 11, "I_NE,I_NW,I_SE,I_SW"),
|
||||
]);
|
||||
|
||||
fn load_554domed(assembly: &Assembly) {
|
||||
load_554aug2(assembly);
|
||||
// Now process the additional data
|
||||
for (id, v, _pinned, l, neighbors) in ACRON554_DOME {
|
||||
let pt = Point::new(id, id, LEVEL_COLORS[l], point(v[0], v[1], v[2]));
|
||||
assembly.try_insert_element(pt);
|
||||
let pt_rc = assembly.find_element(id);
|
||||
// Add any specified neighbors
|
||||
for id in neighbors.split(",") {
|
||||
if id.len() == 0 { continue; }
|
||||
let strut = InversiveDistanceRegulator::new(
|
||||
[assembly.find_element(id), pt_rc.clone()]);
|
||||
strut.set_to(-0.5);
|
||||
assembly.insert_regulator(Rc::new(strut));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --- chooser ---
|
||||
|
||||
/* DEBUG */
|
||||
|
@ -998,6 +1032,7 @@ pub fn TestAssemblyChooser() -> View {
|
|||
"radius-ratio" => load_radius_ratio(assembly),
|
||||
"irisawa-hexlet" => load_irisawa_hexlet(assembly),
|
||||
"aug554" => load_554aug2(assembly),
|
||||
"domed554" => load_554domed(assembly),
|
||||
_ => (),
|
||||
};
|
||||
});
|
||||
|
@ -1018,6 +1053,7 @@ pub fn TestAssemblyChooser() -> View {
|
|||
option(value = "radius-ratio") { "Radius ratio" }
|
||||
option(value = "irisawa-hexlet") { "Irisawa hexlet" }
|
||||
option(value = "aug554") { "McNeill acron 554" }
|
||||
option(value = "domed554") { "Domed acron 554" }
|
||||
option(value = "empty") { "Empty" }
|
||||
}
|
||||
}
|
||||
|
|
422
data554/pinnedDomed1.txt
Normal file
422
data554/pinnedDomed1.txt
Normal file
|
@ -0,0 +1,422 @@
|
|||
A_NE:
|
||||
┌ ┐
|
||||
│ 0.5 │
|
||||
│ 0.5 │
|
||||
│ 0 │
|
||||
│ 0.5 │
|
||||
│ 0.25 │
|
||||
└ ┘
|
||||
|
||||
A_NW:
|
||||
┌ ┐
|
||||
│ -0.5 │
|
||||
│ 0.5 │
|
||||
│ 0 │
|
||||
│ 0.5 │
|
||||
│ 0.25 │
|
||||
└ ┘
|
||||
|
||||
A_SE:
|
||||
┌ ┐
|
||||
│ 0.5 │
|
||||
│ -0.5 │
|
||||
│ 0 │
|
||||
│ 0.5 │
|
||||
│ 0.25 │
|
||||
└ ┘
|
||||
|
||||
A_SW:
|
||||
┌ ┐
|
||||
│ -0.5 │
|
||||
│ -0.5 │
|
||||
│ 0 │
|
||||
│ 0.5 │
|
||||
│ 0.25 │
|
||||
└ ┘
|
||||
|
||||
Z_E:
|
||||
┌ ┐
|
||||
│ 0.226403187618189 │
|
||||
│ -0.0000011852849153538265 │
|
||||
│ 0.8216719444221399 │
|
||||
│ 0.5 │
|
||||
│ 0.36320159380866957 │
|
||||
└ ┘
|
||||
|
||||
Z_S:
|
||||
┌ ┐
|
||||
│ 0.0000012064271737704876 │
|
||||
│ -0.22640322646306607 │
|
||||
│ 0.8216719573565728 │
|
||||
│ 0.5 │
|
||||
│ 0.36320161323110667 │
|
||||
└ ┘
|
||||
|
||||
B_NE:
|
||||
┌ ┐
|
||||
│ 0.8090169943749475 │
|
||||
│ 0.8090169943749475 │
|
||||
│ 0.8994537199739336 │
|
||||
│ 0.5 │
|
||||
│ 1.0590169943749475 │
|
||||
└ ┘
|
||||
|
||||
B_NW:
|
||||
┌ ┐
|
||||
│ -0.8090169943749475 │
|
||||
│ 0.8090169943749475 │
|
||||
│ 0.8994537199739336 │
|
||||
│ 0.5 │
|
||||
│ 1.0590169943749475 │
|
||||
└ ┘
|
||||
|
||||
B_SW:
|
||||
┌ ┐
|
||||
│ -0.8090169943749475 │
|
||||
│ -0.8090169943749475 │
|
||||
│ 0.8994537199739336 │
|
||||
│ 0.5 │
|
||||
│ 1.0590169943749475 │
|
||||
└ ┘
|
||||
|
||||
B_SE:
|
||||
┌ ┐
|
||||
│ 0.8090190229759617 │
|
||||
│ -0.8090188141637347 │
|
||||
│ 0.899451950040933 │
|
||||
│ 0.5 │
|
||||
│ 1.059018649731349 │
|
||||
└ ┘
|
||||
|
||||
Y_NE:
|
||||
┌ ┐
|
||||
│ 0.10639264310226318 │
|
||||
│ 0.10730337799321536 │
|
||||
│ 1.0174285282252145 │
|
||||
│ 0.5 │
|
||||
│ 0.5289971090900759 │
|
||||
└ ┘
|
||||
|
||||
Y_NW:
|
||||
┌ ┐
|
||||
│ -0.10692454007698927 │
|
||||
│ 0.10692454007699025 │
|
||||
│ 1.0183290894713781 │
|
||||
│ 0.5 │
|
||||
│ 0.5299299245035725 │
|
||||
└ ┘
|
||||
|
||||
Y_SE:
|
||||
┌ ┐
|
||||
│ 0.10619251333984216 │
|
||||
│ -0.10758965782463996 │
|
||||
│ 1.0179033510994517 │
|
||||
│ 0.5 │
|
||||
│ 0.5294898085465076 │
|
||||
└ ┘
|
||||
|
||||
Y_SW:
|
||||
┌ ┐
|
||||
│ -0.1067218861162948 │
|
||||
│ -0.10720833408227096 │
|
||||
│ 1.018815416393646 │
|
||||
│ 0.5 │
|
||||
│ 0.5304340206102979 │
|
||||
└ ┘
|
||||
|
||||
C_N:
|
||||
┌ ┐
|
||||
│ 0 │
|
||||
│ 1 │
|
||||
│ 1.4553466902253547 │
|
||||
│ 0.5 │
|
||||
│ 1.5590169943749472 │
|
||||
└ ┘
|
||||
|
||||
C_W:
|
||||
┌ ┐
|
||||
│ -1 │
|
||||
│ 0 │
|
||||
│ 1.4553466902253547 │
|
||||
│ 0.5 │
|
||||
│ 1.5590169943749472 │
|
||||
└ ┘
|
||||
|
||||
C_E:
|
||||
┌ ┐
|
||||
│ 0.9987752175493758 │
|
||||
│ -0.0000014991453936079486 │
|
||||
│ 1.4557639853989686 │
|
||||
│ 0.5 │
|
||||
│ 1.558400358790791 │
|
||||
└ ┘
|
||||
|
||||
C_S:
|
||||
┌ ┐
|
||||
│ 0.0000016241779451142522 │
|
||||
│ -1.0006558417024733 │
|
||||
│ 1.4551187604443314 │
|
||||
│ 0.5 │
|
||||
│ 1.5593413623171548 │
|
||||
└ ┘
|
||||
|
||||
D_NE:
|
||||
┌ ┐
|
||||
│ 0.18880014858596228 │
|
||||
│ 0.1900242678455326 │
|
||||
│ 2.0105891402812603 │
|
||||
│ 0.5 │
|
||||
│ 2.057111349663646 │
|
||||
└ ┘
|
||||
|
||||
D_NW:
|
||||
┌ ┐
|
||||
│ -0.19098138154171115 │
|
||||
│ 0.19098137963576622 │
|
||||
│ 2.0112375319589524 │
|
||||
│ 0.5 │
|
||||
│ 2.0590124438119553 │
|
||||
└ ┘
|
||||
|
||||
D_SE:
|
||||
┌ ┐
|
||||
│ 0.18930742120763205 │
|
||||
│ -0.19118865645940125 │
|
||||
│ 2.0109297224500113 │
|
||||
│ 0.5 │
|
||||
│ 2.0581147310902232 │
|
||||
└ ┘
|
||||
|
||||
D_SW:
|
||||
┌ ┐
|
||||
│ -0.19150073518747784 │
|
||||
│ -0.19215789298794494 │
|
||||
│ 2.011588230853374 │
|
||||
│ 0.5 │
|
||||
│ 2.060041842611764 │
|
||||
└ ┘
|
||||
|
||||
E_N:
|
||||
┌ ┐
|
||||
│ 0.0018705386847266854 │
|
||||
│ 1.067093230632768 │
|
||||
│ 2.4530916457713374 │
|
||||
│ 0.5 │
|
||||
│ 3.5781750425903667 │
|
||||
└ ┘
|
||||
|
||||
E_W:
|
||||
┌ ┐
|
||||
│ -1.0677431983248686 │
|
||||
│ 0.0010069929693730891 │
|
||||
│ 2.453048970298719 │
|
||||
│ 0.5 │
|
||||
│ 3.578762902144111 │
|
||||
└ ┘
|
||||
|
||||
E_E:
|
||||
┌ ┐
|
||||
│ 1.0651802756853244 │
|
||||
│ 0.0009763264191362732 │
|
||||
│ 2.4535562533844497 │
|
||||
│ 0.5 │
|
||||
│ 3.5772741307914204 │
|
||||
└ ┘
|
||||
|
||||
E_S:
|
||||
┌ ┐
|
||||
│ 0.0019014550057512374 │
|
||||
│ -1.0684657533845878 │
|
||||
│ 2.4528152065600635 │
|
||||
│ 0.5 │
|
||||
│ 3.5789625604223154 │
|
||||
└ ┘
|
||||
|
||||
F_NE:
|
||||
┌ ┐
|
||||
│ 0.2768627273275836 │
|
||||
│ 0.27828736361573514 │
|
||||
│ 3.0027865275597208 │
|
||||
│ 0.5 │
|
||||
│ 4.58541185017254 │
|
||||
└ ┘
|
||||
|
||||
F_NW:
|
||||
┌ ┐
|
||||
│ -0.28103002630311136 │
|
||||
│ 0.2812882756471644 │
|
||||
│ 3.0030716277259866 │
|
||||
│ 0.5 │
|
||||
│ 4.588270112066947 │
|
||||
└ ┘
|
||||
|
||||
F_SE:
|
||||
┌ ┐
|
||||
│ 0.2784445942560668 │
|
||||
│ -0.28049951604978735 │
|
||||
│ 3.002936318943545 │
|
||||
│ 0.5 │
|
||||
│ 4.586918980412344 │
|
||||
└ ┘
|
||||
|
||||
F_SW:
|
||||
┌ ┐
|
||||
│ -0.28267553068657514 │
|
||||
│ -0.2835640963165625 │
|
||||
│ 3.0032197706602255 │
|
||||
│ 0.5 │
|
||||
│ 4.58982149472019 │
|
||||
└ ┘
|
||||
|
||||
G_1:
|
||||
┌ ┐
|
||||
│ 0.49499953176717715 │
|
||||
│ 1.2038466206487632 │
|
||||
│ 3.3122320493386623 │
|
||||
│ 0.5 │
|
||||
│ 6.332576199448855 │
|
||||
└ ┘
|
||||
|
||||
G_2:
|
||||
┌ ┐
|
||||
│ 1.202713808441931 │
|
||||
│ 0.49734958577973293 │
|
||||
│ 3.3107015388161924 │
|
||||
│ 0.5 │
|
||||
│ 6.327310911161432 │
|
||||
└ ┘
|
||||
|
||||
G_4:
|
||||
┌ ┐
|
||||
│ 1.205139169495155 │
|
||||
│ -0.5026367636047644 │
|
||||
│ 3.3060733731956917 │
|
||||
│ 0.5 │
|
||||
│ 6.3175626265818385 │
|
||||
└ ┘
|
||||
|
||||
G_5:
|
||||
┌ ┐
|
||||
│ 0.49496884524644963 │
|
||||
│ -1.2066437505221832 │
|
||||
│ 3.3117630879125723 │
|
||||
│ 0.5 │
|
||||
│ 6.334379009718901 │
|
||||
└ ┘
|
||||
|
||||
G_7:
|
||||
┌ ┐
|
||||
│ -0.5049809193563459 │
|
||||
│ -1.2113397181531034 │
|
||||
│ 3.3029076805907547 │
|
||||
│ 0.5 │
|
||||
│ 6.315774407531318 │
|
||||
└ ┘
|
||||
|
||||
G_8:
|
||||
┌ ┐
|
||||
│ -1.2105141090163352 │
|
||||
│ -0.502666189603216 │
|
||||
│ 3.305064063797819 │
|
||||
│ 0.5 │
|
||||
│ 6.320733099502539 │
|
||||
└ ┘
|
||||
|
||||
G_10:
|
||||
┌ ┐
|
||||
│ -1.2079897553472638 │
|
||||
│ 0.49731945797605365 │
|
||||
│ 3.309789835947903 │
|
||||
│ 0.5 │
|
||||
│ 6.330637311024589 │
|
||||
└ ┘
|
||||
|
||||
G_11:
|
||||
┌ ┐
|
||||
│ -0.5049515565196006 │
|
||||
│ 1.2084435744379876 │
|
||||
│ 3.303474805253526 │
|
||||
│ 0.5 │
|
||||
│ 6.314128853476387 │
|
||||
└ ┘
|
||||
|
||||
H_E:
|
||||
┌ ┐
|
||||
│ 0.3493418610082748 │
|
||||
│ -0.004066882149056481 │
|
||||
│ 3.1680910206723154 │
|
||||
│ 0.5 │
|
||||
│ 5.079428493907433 │
|
||||
└ ┘
|
||||
|
||||
H_N:
|
||||
┌ ┐
|
||||
│ -0.007700036653444471 │
|
||||
│ 0.35115095882911657 │
|
||||
│ 3.1700941994675693 │
|
||||
│ 0.5 │
|
||||
│ 5.086431758305634 │
|
||||
└ ┘
|
||||
|
||||
H_S:
|
||||
┌ ┐
|
||||
│ -0.007865804611166411 │
|
||||
│ -0.3529429622292672 │
|
||||
│ 3.176292181037656 │
|
||||
│ 0.5 │
|
||||
│ 5.10673131179707 │
|
||||
└ ┘
|
||||
|
||||
H_W:
|
||||
┌ ┐
|
||||
│ -0.35269124233601623 │
|
||||
│ -0.004232365263278458 │
|
||||
│ 3.179750192542026 │
|
||||
│ 0.5 │
|
||||
│ 5.117610155394313 │
|
||||
└ ┘
|
||||
|
||||
I_NE:
|
||||
┌ ┐
|
||||
│ 0.49805064236295854 │
|
||||
│ 0.4976522130513484 │
|
||||
│ 4.020243412022774 │
|
||||
│ 0.5 │
|
||||
│ 8.329034633323353 │
|
||||
└ ┘
|
||||
|
||||
I_NW:
|
||||
┌ ┐
|
||||
│ -0.5060555022841527 │
|
||||
│ 0.5128022974270082 │
|
||||
│ 4.021863319771454 │
|
||||
│ 0.5 │
|
||||
│ 8.34722145884986 │
|
||||
└ ┘
|
||||
|
||||
I_SE:
|
||||
┌ ┐
|
||||
│ 0.5060495556329386 │
|
||||
│ -0.5018683273402639 │
|
||||
│ 4.021107068324604 │
|
||||
│ 0.5 │
|
||||
│ 8.338630006433696 │
|
||||
└ ┘
|
||||
|
||||
I_SW:
|
||||
┌ ┐
|
||||
│ -0.5143110146278468 │
|
||||
│ -0.5172754412791255 │
|
||||
│ 4.0227602162137135 │
|
||||
│ 0.5 │
|
||||
│ 8.357344731885544 │
|
||||
└ ┘
|
||||
|
||||
J:
|
||||
┌ ┐
|
||||
│ -0.012852519748535315 │
|
||||
│ -0.006830373978588703 │
|
||||
│ 3.3242009136904245 │
|
||||
│ 0.5 │
|
||||
│ 5.525261774194571 │
|
||||
└ ┘
|
95
data554/processDomed.py
Normal file
95
data554/processDomed.py
Normal file
|
@ -0,0 +1,95 @@
|
|||
from math import fabs, nan, sqrt
|
||||
import sys
|
||||
vertices = {}
|
||||
current_id = ""
|
||||
for line in sys.stdin:
|
||||
text = line.strip()
|
||||
if text.endswith(":"):
|
||||
new_id = text.strip(":")
|
||||
vertices[new_id] = []
|
||||
if current_id: print(current_id, vertices[current_id])
|
||||
current_id = new_id
|
||||
continue
|
||||
remainder = text.strip("┌ ┐└┘│")
|
||||
if len(remainder): vertices[current_id].append(float(remainder))
|
||||
print(len(vertices), "vertices found")
|
||||
|
||||
P = True
|
||||
F = False
|
||||
HPHI = nan
|
||||
RTHPHI = nan
|
||||
RTPHIPH = nan
|
||||
# Taken verbatim from test_assembly_chooser.rs
|
||||
acron_data = [
|
||||
("A_NE", [ 0.5, 0.5, 0.], P, 0, ""),
|
||||
("A_NW", [-0.5, 0.5, 0.], P, 0, ""),
|
||||
("A_SE", [ 0.5, -0.5, 0.], P, 0, ""),
|
||||
("A_SW", [-0.5, -0.5, 0.], P, 0, ""),
|
||||
("Z_E", [ 0.229, -0.002, 0.821], F, 1, "A_NE,A_SE"),
|
||||
("Z_S", [ 0.002, -0.229, 0.821], F, 1, "A_SE,A_SW"),
|
||||
("B_NE", [ HPHI, HPHI, RTHPHI], P, 2, "Z_E"),
|
||||
("B_NW", [-HPHI, HPHI, RTHPHI], P, 2, ""),
|
||||
("B_SW", [-HPHI, -HPHI, RTHPHI], P, 2, "Z_S"),
|
||||
("B_SE", [ 0.812, -0.812, 0.89], F, 2, "A_SE,Z_E,Z_S"),
|
||||
("Y_NE", [ 0.11, 0.103, 1.019], F, 3, "B_NE"),
|
||||
("Y_NW", [-0.103, 0.103, 1.02], F, 3, "B_NW"),
|
||||
("Y_SE", [ 0.11, -0.11, 1.017], F, 3, "B_SE"),
|
||||
("Y_SW", [-0.103, -0.11, 1.019], F, 3, "B_SW"),
|
||||
("C_N", [ 0., 1., RTPHIPH], P, 4, "Y_NE,Y_NW"),
|
||||
("C_W", [-1., 0., RTPHIPH], P, 4, "Y_NW,Y_SW"),
|
||||
("C_E", [ 1.006, -0.006, 1.45], F, 4, "B_NE,B_SE,Y_NE,Y_SE"),
|
||||
("C_S", [ 0.006, -1.006, 1.45], F, 4, "B_SE,B_SW,Y_SE,Y_SW"),
|
||||
("D_NE", [ 0.2, 0.181, 2.011], F, 5, "Y_NE,C_N,C_E"),
|
||||
("D_NW", [-0.181, 0.181, 2.014], F, 5, "Y_NW,C_N,C_W"),
|
||||
("D_SE", [ 0.2, -0.2, 2.009], F, 5, "Y_SE,C_E,C_S"),
|
||||
("D_SW", [-0.181, -0.2, 2.011], F, 5, "Y_SW,C_W,C_S"),
|
||||
("E_N", [ 0.012, 1.055, 2.46], F, 6, "C_N,D_NE,D_NW"),
|
||||
("E_W", [-1.055, -0.012, 2.46], F, 6, "C_W,D_NW,D_SW"),
|
||||
("E_E", [ 1.079, -0.012, 2.447], F, 6, "C_E,D_NE,D_SE"),
|
||||
("E_S", [ 0.012, -1.079, 2.447], F, 6, "C_S,D_SE,D_SW"),
|
||||
("F_NE", [ 0.296, 0.265, 3.003], F, 7, "D_NE,E_N,E_E"),
|
||||
("F_NW", [-0.265, 0.265, 3.007], F, 7, "D_NW,E_N,E_W"),
|
||||
("F_SE", [ 0.296, -0.296, 3.0], F, 7, "D_SE,E_E,E_S"),
|
||||
("F_SW", [-0.265, -0.296, 3.003], F, 7, "D_SW,E_W,E_S"),
|
||||
# The following must be in order around the octagon (in some orientation)
|
||||
("G_1", [ 0.517, 1.19, 3.312], F, 8, "E_N,F_NE"),
|
||||
("G_2", [ 1.224, 0.483, 3.304], F, 8, "E_E,F_NE"),
|
||||
("G_4", [ 1.224, -0.517, 3.298], F, 8, "E_E,F_SE"),
|
||||
("G_5", [ 0.517, -1.224, 3.298], F, 8, "E_S,F_SE"),
|
||||
("G_7", [-0.483, -1.224, 3.304], F, 8, "E_S,F_SW"),
|
||||
("G_8", [-1.19, -0.517, 3.312], F, 8, "E_W,F_SW"),
|
||||
("G_10", [-1.19, 0.483, 3.318], F, 8, "E_W,F_NW"),
|
||||
("G_11", [-0.483, 1.19, 3.318], F, 8, "E_N,F_NW"),
|
||||
# Additional data
|
||||
("H_E", [ 0.359, -0.006, 3.161], F, 9, "G_2,G_4"),
|
||||
("H_N", [ 0.005, 0.348, 3.158], F, 9, "G_1,G_11"),
|
||||
("H_S", [ 0.006, 0.359, 3.159], F, 9, "G_5,G_7"),
|
||||
("H_W", [-0.347, -0.005, 3.163], F, 9, "G_8,G_10"),
|
||||
("I_NE", [ 0.507, 0.493, 4.015], F, 10, "G_1,G_2,H_E,H_N"),
|
||||
("I_NW", [-0.493, 0.493, 4.013], F, 10, "G_10,G_11,H_N,H_W"),
|
||||
("I_SE", [ 0.507, -0.507, 4.012], F, 10, "G_4,G_5,H_E,H_S"),
|
||||
("I_SW", [-0.493, -0.507, 4.015], F, 10, "G_7,G_8,H_S,H_W"),
|
||||
("J", [ 0.004, -0.010, 3.303], F, 11, "I_NE,I_NW,I_SE,I_SW"),
|
||||
]
|
||||
|
||||
E = 0.0
|
||||
n_struts = 11 # for the pinned vertices, which all have length exactly 1
|
||||
for vi in range(0, len(acron_data)):
|
||||
start_id = acron_data[vi][0]
|
||||
start = vertices[start_id]
|
||||
ends = acron_data[vi][4].split(",")
|
||||
if acron_data[vi][3] == 8:
|
||||
if start_id != "G_1":
|
||||
ends.append(acron_data[vi-1][0])
|
||||
if vi+1 == len(acron_data) or not(acron_data[vi+1][0].startswith("G")):
|
||||
ends.append("G_1")
|
||||
for end_id in ends:
|
||||
if not(end_id): continue
|
||||
end = vertices[end_id]
|
||||
dist = sqrt(
|
||||
(end[0]-start[0])**2 + (end[1]-start[1])**2 + (end[2]-start[2])**2)
|
||||
print(f"{start_id}-{end_id}: {dist} {dist-1}")
|
||||
E += fabs(dist-1)
|
||||
n_struts += 1
|
||||
print(n_struts, "unit edges")
|
||||
print(f"----> Total distortion E={E}")
|
Loading…
Add table
Add a link
Reference in a new issue