Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function generateIcosahedron()
- {
- var phi = (1.0 + Math.sqrt(5.0)) / 2.0;
- var du = 1.0 / Math.sqrt(phi * phi + 1.0);
- var dv = phi * du;
- nodes =
- [
- { p: new Vector3(0, +dv, +du), e: [], f: [] },
- { p: new Vector3(0, +dv, -du), e: [], f: [] },
- { p: new Vector3(0, -dv, +du), e: [], f: [] },
- { p: new Vector3(0, -dv, -du), e: [], f: [] },
- { p: new Vector3(+du, 0, +dv), e: [], f: [] },
- { p: new Vector3(-du, 0, +dv), e: [], f: [] },
- { p: new Vector3(+du, 0, -dv), e: [], f: [] },
- { p: new Vector3(-du, 0, -dv), e: [], f: [] },
- { p: new Vector3(+dv, +du, 0), e: [], f: [] },
- { p: new Vector3(+dv, -du, 0), e: [], f: [] },
- { p: new Vector3(-dv, +du, 0), e: [], f: [] },
- { p: new Vector3(-dv, -du, 0), e: [], f: [] },
- ];
- edges =
- [
- { n: [ 0, 1, ], f: [], },
- { n: [ 0, 4, ], f: [], },
- { n: [ 0, 5, ], f: [], },
- { n: [ 0, 8, ], f: [], },
- { n: [ 0, 10, ], f: [], },
- { n: [ 1, 6, ], f: [], },
- { n: [ 1, 7, ], f: [], },
- { n: [ 1, 8, ], f: [], },
- { n: [ 1, 10, ], f: [], },
- { n: [ 2, 3, ], f: [], },
- { n: [ 2, 4, ], f: [], },
- { n: [ 2, 5, ], f: [], },
- { n: [ 2, 9, ], f: [], },
- { n: [ 2, 11, ], f: [], },
- { n: [ 3, 6, ], f: [], },
- { n: [ 3, 7, ], f: [], },
- { n: [ 3, 9, ], f: [], },
- { n: [ 3, 11, ], f: [], },
- { n: [ 4, 5, ], f: [], },
- { n: [ 4, 8, ], f: [], },
- { n: [ 4, 9, ], f: [], },
- { n: [ 5, 10, ], f: [], },
- { n: [ 5, 11, ], f: [], },
- { n: [ 6, 7, ], f: [], },
- { n: [ 6, 8, ], f: [], },
- { n: [ 6, 9, ], f: [], },
- { n: [ 7, 10, ], f: [], },
- { n: [ 7, 11, ], f: [], },
- { n: [ 8, 9, ], f: [], },
- { n: [ 10, 11, ], f: [], },
- ];
- faces =
- [
- { n: [ 0, 1, 8 ], e: [ 0, 7, 3 ], },
- { n: [ 0, 4, 5 ], e: [ 1, 18, 2 ], },
- { n: [ 0, 5, 10 ], e: [ 2, 21, 4 ], },
- { n: [ 0, 8, 4 ], e: [ 3, 19, 1 ], },
- { n: [ 0, 10, 1 ], e: [ 4, 8, 0 ], },
- { n: [ 1, 6, 8 ], e: [ 5, 24, 7 ], },
- { n: [ 1, 7, 6 ], e: [ 6, 23, 5 ], },
- { n: [ 1, 10, 7 ], e: [ 8, 26, 6 ], },
- { n: [ 2, 3, 11 ], e: [ 9, 17, 13 ], },
- { n: [ 2, 4, 9 ], e: [ 10, 20, 12 ], },
- { n: [ 2, 5, 4 ], e: [ 11, 18, 10 ], },
- { n: [ 2, 9, 3 ], e: [ 12, 16, 9 ], },
- { n: [ 2, 11, 5 ], e: [ 13, 22, 11 ], },
- { n: [ 3, 6, 7 ], e: [ 14, 23, 15 ], },
- { n: [ 3, 7, 11 ], e: [ 15, 27, 17 ], },
- { n: [ 3, 9, 6 ], e: [ 16, 25, 14 ], },
- { n: [ 4, 8, 9 ], e: [ 19, 28, 20 ], },
- { n: [ 5, 11, 10 ], e: [ 22, 29, 21 ], },
- { n: [ 6, 9, 8 ], e: [ 25, 28, 24 ], },
- { n: [ 7, 10, 11 ], e: [ 26, 29, 27 ], },
- ];
- for (var i = 0; i < edges.length; ++i)
- for (var j = 0; j < edges[i].n.length; ++j)
- nodes[j].e.push(i);
- for (var i = 0; i < faces.length; ++i)
- for (var j = 0; j < faces[i].n.length; ++j)
- nodes[j].f.push(i);
- for (var i = 0; i < faces.length; ++i)
- for (var j = 0; j < faces[i].e.length; ++j)
- edges[j].f.push(i);
- return { nodes: nodes, edges: edges, faces: faces };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement