Can get the two dodecahedra which a face belongs to
parent
228d1a91c4
commit
32644b5d1e
22
testbed.js
22
testbed.js
|
@ -295,6 +295,8 @@ function find_adjacent_faces(faces, face) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function find_dodeca_mutuals(faces, f1, f2) {
|
function find_dodeca_mutuals(faces, f1, f2) {
|
||||||
// for any two adjacent faces, find their common neighbours where
|
// for any two adjacent faces, find their common neighbours where
|
||||||
// all three share exactly one vertex (this, I think, guarantees that
|
// all three share exactly one vertex (this, I think, guarantees that
|
||||||
|
@ -360,6 +362,26 @@ function make_dodecahedron(faces, f1, f2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// for a face, pick an edge, and then find the other two faces which
|
||||||
|
// share this edge. These can be used as the starting points for the
|
||||||
|
// first face's two dodecahedra
|
||||||
|
|
||||||
|
function find_edge_neighbours(faces, face) {
|
||||||
|
const n1 = face.nodes[0];
|
||||||
|
const n2 = face.nodes[1];
|
||||||
|
return faces.filter((f) => f.id !== face.id && f.nodes.includes(n1) && f.nodes.includes(n2));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// each face is in two dodecahedra: this returns them both
|
||||||
|
|
||||||
|
function face_to_dodecahedra(faces, f) {
|
||||||
|
const edge_friends = find_edge_neighbours(faces, f);
|
||||||
|
const d1 = make_dodecahedron(faces, f, edge_friends[0]);
|
||||||
|
const d2 = make_dodecahedron(faces, f, edge_friends[1]);
|
||||||
|
return [ d1, d2 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const cell120 = () => {
|
const cell120 = () => {
|
||||||
const nodes = make_120cell_vertices();
|
const nodes = make_120cell_vertices();
|
||||||
|
|
Loading…
Reference in New Issue