More explorations of the 120-cell's 5-cells
This commit is contained in:
parent
c1137f4da2
commit
36d3eaff93
94
cellindex.js
94
cellindex.js
@ -949,6 +949,100 @@ export const CELL120_CELL5 = {
|
|||||||
541
|
541
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"some_cell5s": {
|
||||||
|
"1": [
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
264,
|
||||||
|
309,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"2": [
|
||||||
|
223,
|
||||||
|
76,
|
||||||
|
238,
|
||||||
|
84,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
253,
|
||||||
|
44,
|
||||||
|
283,
|
||||||
|
304,
|
||||||
|
42
|
||||||
|
],
|
||||||
|
"4": [
|
||||||
|
419,
|
||||||
|
112,
|
||||||
|
197,
|
||||||
|
578,
|
||||||
|
521
|
||||||
|
],
|
||||||
|
"5": [
|
||||||
|
339,
|
||||||
|
14,
|
||||||
|
384,
|
||||||
|
382,
|
||||||
|
337
|
||||||
|
],
|
||||||
|
"6": [
|
||||||
|
331,
|
||||||
|
4,
|
||||||
|
335,
|
||||||
|
390,
|
||||||
|
386
|
||||||
|
],
|
||||||
|
"7": [
|
||||||
|
427,
|
||||||
|
160,
|
||||||
|
551,
|
||||||
|
146,
|
||||||
|
557
|
||||||
|
],
|
||||||
|
"8": [
|
||||||
|
265,
|
||||||
|
60,
|
||||||
|
64,
|
||||||
|
295,
|
||||||
|
246
|
||||||
|
],
|
||||||
|
"9": [
|
||||||
|
473,
|
||||||
|
100,
|
||||||
|
495,
|
||||||
|
213,
|
||||||
|
462
|
||||||
|
],
|
||||||
|
"10": [
|
||||||
|
393,
|
||||||
|
6,
|
||||||
|
328,
|
||||||
|
397,
|
||||||
|
326
|
||||||
|
],
|
||||||
|
"11": [
|
||||||
|
539,
|
||||||
|
164,
|
||||||
|
439,
|
||||||
|
561,
|
||||||
|
142
|
||||||
|
],
|
||||||
|
"12": [
|
||||||
|
511,
|
||||||
|
122,
|
||||||
|
456,
|
||||||
|
595,
|
||||||
|
181
|
||||||
|
],
|
||||||
|
"13": [
|
||||||
|
555,
|
||||||
|
154,
|
||||||
|
152,
|
||||||
|
545,
|
||||||
|
429
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -437,7 +437,7 @@ function coherent_5cells_r(cell120, all5, c5s, c50) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
function coherent_5cells(cell120, all5) {
|
function coherent_5cells(cell120, all5d) {
|
||||||
// pick a starting point, collect coherent 5_cells, continue till
|
// pick a starting point, collect coherent 5_cells, continue till
|
||||||
// there aren't any new ones
|
// there aren't any new ones
|
||||||
|
|
||||||
@ -452,41 +452,68 @@ function coherent_5cells(cell120, all5) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function coherent_all() {
|
||||||
|
|
||||||
|
|
||||||
|
const cell120 = POLYTOPES.cell120_inscribed();
|
||||||
|
const all5 = gather_5cells(cell120);
|
||||||
|
|
||||||
const cell120 = POLYTOPES.cell120_inscribed();
|
const c5s = coherent_5cells(cell120, all5);
|
||||||
const all5 = gather_5cells(cell120);
|
|
||||||
|
|
||||||
const c5s = coherent_5cells(cell120, all5);
|
const celli = c5s.map((c5) => [ "1", "2", "3", "4", "5" ].map((l) => c5[l]));
|
||||||
|
|
||||||
const celli = c5s.map((c5) => [ "1", "2", "3", "4", "5" ].map((l) => c5[l]));
|
|
||||||
|
|
||||||
|
|
||||||
// check it because I don't believe it yet
|
// check it because I don't believe it yet
|
||||||
|
|
||||||
const vertex_check = {};
|
const vertex_check = {};
|
||||||
|
|
||||||
for( const c5 of celli ) {
|
for( const c5 of celli ) {
|
||||||
for( const l in c5 ) {
|
for( const l in c5 ) {
|
||||||
const v = c5[l];
|
const v = c5[l];
|
||||||
if( v in vertex_check ) {
|
if( v in vertex_check ) {
|
||||||
console.log(`Double count vertex ${v}`);
|
console.log(`Double count vertex ${v}`);
|
||||||
|
}
|
||||||
|
vertex_check[v] = 1;
|
||||||
}
|
}
|
||||||
vertex_check[v] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for( let i = 1; i < 601; i++ ) {
|
for( let i = 1; i < 601; i++ ) {
|
||||||
if( !vertex_check[i] ) {
|
if( !vertex_check[i] ) {
|
||||||
console.log(`v ${i} missing`);
|
console.log(`v ${i} missing`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const idict = {};
|
||||||
|
for( let i = 1; i < 121; i++ ) {
|
||||||
|
idict[i] = celli[i - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(JSON.stringify(idict, null, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const idict = {};
|
|
||||||
for( let i = 1; i < 121; i++ ) {
|
function coherent_one_set() {
|
||||||
idict[i] = celli[i - 1];
|
|
||||||
|
|
||||||
|
const cell120 = POLYTOPES.cell120_inscribed();
|
||||||
|
const all5 = gather_5cells(cell120);
|
||||||
|
|
||||||
|
const c5ns = cell5_tetras(cell120, all5, all5[0]);
|
||||||
|
|
||||||
|
|
||||||
|
const celli = c5ns.map((c5) => [ "1", "2", "3", "4", "5" ].map((l) => c5[l]));
|
||||||
|
|
||||||
|
|
||||||
|
const idict = {};
|
||||||
|
|
||||||
|
for( let i = 0; i < celli.length; i++ ) {
|
||||||
|
idict[i + 1] = celli[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(JSON.stringify(idict, null, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(JSON.stringify(idict, null, 2));
|
|
||||||
|
coherent_one_set();
|
||||||
|
|||||||
57
polytopes.js
57
polytopes.js
@ -498,6 +498,61 @@ export const cell120_inscribed_cell5 = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const cell120_inscribe_cell5_subset = () => {
|
||||||
|
const nodes = make_120cell_vertices();
|
||||||
|
const links = auto_detect_edges(nodes, 4);
|
||||||
|
|
||||||
|
for( const cstr in CELLINDEX.INDEX120 ) {
|
||||||
|
label_nodes(nodes, CELLINDEX.INDEX120[cstr], Number(cstr));
|
||||||
|
}
|
||||||
|
|
||||||
|
links.map((l) => l.label = 0);
|
||||||
|
|
||||||
|
const CELL5S = CELLINDEX.CELL120_CELL5.some_cell5s;
|
||||||
|
const link5s = [];
|
||||||
|
const nodes_subset = [];
|
||||||
|
|
||||||
|
for( const c5 in CELL5S ) {
|
||||||
|
const nodes5 = nodes.filter((n) => CELL5S[c5].includes(n.id));
|
||||||
|
const cell5links = auto_detect_edges(nodes5, 5);
|
||||||
|
cell5links.map((l) => l.label = 8);
|
||||||
|
link5s.push(...cell5links);
|
||||||
|
for( const n5 of nodes5 ) {
|
||||||
|
nodes_subset.push(n5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now add the links of the inscribed 600-cells which have the
|
||||||
|
// node subset in them
|
||||||
|
|
||||||
|
const link_subset = (l) => {
|
||||||
|
const source = nodes_subset.filter((n) => n.id === l.source);
|
||||||
|
const target = nodes_subset.filter((n) => n.id === l.target);
|
||||||
|
return source.length === 1 && target.length === 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
for( const p of [ 1, 2, 3, 4, 5 ]) {
|
||||||
|
const nodes600 = nodes.filter((n) => n.label === p);
|
||||||
|
const links600 = auto_detect_edges(nodes600, 12);
|
||||||
|
links600.map((l) => l.label = p);
|
||||||
|
for( const link of links600 ) {
|
||||||
|
if( link_subset(link) ) {
|
||||||
|
link5s.push(link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(link5s);
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: '120-cell 5-cell subset',
|
||||||
|
nodes: nodes_subset,
|
||||||
|
links: link5s,
|
||||||
|
options: [
|
||||||
|
{ name: "none", links: [ 0, 1, 2, 3, 4, 5, 8 ]},
|
||||||
|
],
|
||||||
|
description: `Showing the subset of 5-cells in one icosahedron`,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function partition_coord(i, coords, invert) {
|
function partition_coord(i, coords, invert) {
|
||||||
const j = invert ? -i : i;
|
const j = invert ? -i : i;
|
||||||
@ -913,6 +968,8 @@ export const build_all = () => {
|
|||||||
cell600(),
|
cell600(),
|
||||||
cell600_layered(),
|
cell600_layered(),
|
||||||
cell120_inscribed(),
|
cell120_inscribed(),
|
||||||
|
cell120_inscribed_cell5(),
|
||||||
|
cell120_inscribe_cell5_subset(),
|
||||||
cell120_layered()
|
cell120_layered()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user