Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function generateIcosahedron()
  2. {
  3.     var phi = (1.0 + Math.sqrt(5.0)) / 2.0;
  4.     var du = 1.0 / Math.sqrt(phi * phi + 1.0);
  5.     var dv = phi * du;
  6.    
  7.     nodes =
  8.     [
  9.         { p: new Vector3(0, +dv, +du), e: [], f: [] },
  10.         { p: new Vector3(0, +dv, -du), e: [], f: [] },
  11.         { p: new Vector3(0, -dv, +du), e: [], f: [] },
  12.         { p: new Vector3(0, -dv, -du), e: [], f: [] },
  13.         { p: new Vector3(+du, 0, +dv), e: [], f: [] },
  14.         { p: new Vector3(-du, 0, +dv), e: [], f: [] },
  15.         { p: new Vector3(+du, 0, -dv), e: [], f: [] },
  16.         { p: new Vector3(-du, 0, -dv), e: [], f: [] },
  17.         { p: new Vector3(+dv, +du, 0), e: [], f: [] },
  18.         { p: new Vector3(+dv, -du, 0), e: [], f: [] },
  19.         { p: new Vector3(-dv, +du, 0), e: [], f: [] },
  20.         { p: new Vector3(-dv, -du, 0), e: [], f: [] },
  21.     ];
  22.    
  23.     edges =
  24.     [
  25.         { n: [  0,  1, ], f: [], },
  26.         { n: [  0,  4, ], f: [], },
  27.         { n: [  0,  5, ], f: [], },
  28.         { n: [  0,  8, ], f: [], },
  29.         { n: [  0, 10, ], f: [], },
  30.         { n: [  1,  6, ], f: [], },
  31.         { n: [  1,  7, ], f: [], },
  32.         { n: [  1,  8, ], f: [], },
  33.         { n: [  1, 10, ], f: [], },
  34.         { n: [  2,  3, ], f: [], },
  35.         { n: [  2,  4, ], f: [], },
  36.         { n: [  2,  5, ], f: [], },
  37.         { n: [  2,  9, ], f: [], },
  38.         { n: [  2, 11, ], f: [], },
  39.         { n: [  3,  6, ], f: [], },
  40.         { n: [  3,  7, ], f: [], },
  41.         { n: [  3,  9, ], f: [], },
  42.         { n: [  3, 11, ], f: [], },
  43.         { n: [  4,  5, ], f: [], },
  44.         { n: [  4,  8, ], f: [], },
  45.         { n: [  4,  9, ], f: [], },
  46.         { n: [  5, 10, ], f: [], },
  47.         { n: [  5, 11, ], f: [], },
  48.         { n: [  6,  7, ], f: [], },
  49.         { n: [  6,  8, ], f: [], },
  50.         { n: [  6,  9, ], f: [], },
  51.         { n: [  7, 10, ], f: [], },
  52.         { n: [  7, 11, ], f: [], },
  53.         { n: [  8,  9, ], f: [], },
  54.         { n: [ 10, 11, ], f: [], },
  55.     ];
  56.    
  57.     faces =
  58.     [
  59.         { n: [  0,  1,  8 ], e: [  0,  7,  3 ], },
  60.         { n: [  0,  4,  5 ], e: [  1, 18,  2 ], },
  61.         { n: [  0,  5, 10 ], e: [  2, 21,  4 ], },
  62.         { n: [  0,  8,  4 ], e: [  3, 19,  1 ], },
  63.         { n: [  0, 10,  1 ], e: [  4,  8,  0 ], },
  64.         { n: [  1,  6,  8 ], e: [  5, 24,  7 ], },
  65.         { n: [  1,  7,  6 ], e: [  6, 23,  5 ], },
  66.         { n: [  1, 10,  7 ], e: [  8, 26,  6 ], },
  67.         { n: [  2,  3, 11 ], e: [  9, 17, 13 ], },
  68.         { n: [  2,  4,  9 ], e: [ 10, 20, 12 ], },
  69.         { n: [  2,  5,  4 ], e: [ 11, 18, 10 ], },
  70.         { n: [  2,  9,  3 ], e: [ 12, 16,  9 ], },
  71.         { n: [  2, 11,  5 ], e: [ 13, 22, 11 ], },
  72.         { n: [  3,  6,  7 ], e: [ 14, 23, 15 ], },
  73.         { n: [  3,  7, 11 ], e: [ 15, 27, 17 ], },
  74.         { n: [  3,  9,  6 ], e: [ 16, 25, 14 ], },
  75.         { n: [  4,  8,  9 ], e: [ 19, 28, 20 ], },
  76.         { n: [  5, 11, 10 ], e: [ 22, 29, 21 ], },
  77.         { n: [  6,  9,  8 ], e: [ 25, 28, 24 ], },
  78.         { n: [  7, 10, 11 ], e: [ 26, 29, 27 ], },
  79.     ];
  80.    
  81.     for (var i = 0; i < edges.length; ++i)
  82.         for (var j = 0; j < edges[i].n.length; ++j)
  83.             nodes[j].e.push(i);
  84.    
  85.     for (var i = 0; i < faces.length; ++i)
  86.         for (var j = 0; j < faces[i].n.length; ++j)
  87.             nodes[j].f.push(i);
  88.    
  89.     for (var i = 0; i < faces.length; ++i)
  90.         for (var j = 0; j < faces[i].e.length; ++j)
  91.             edges[j].f.push(i);
  92.    
  93.     return { nodes: nodes, edges: edges, faces: faces };
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement