Advertisement
Guest User

Untitled

a guest
Dec 28th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. Public Function m3SphereInit(ByVal ppBase As Integer, ByVal r As Double) As m3Solid
  2.  
  3. Dim s As m3Solid
  4. Dim nSlices As Integer
  5. Dim pt As m3Point
  6. Dim mZ As m3Matrix
  7. Dim mY As m3Matrix
  8. Dim ind As Integer
  9. Dim slice As Integer
  10. Dim i As Integer
  11.  
  12. nSlices = (ppBase - 2) / 2
  13. s.nVerts = 2 + ppBase * nSlices
  14. s.nFaces = 2 * ppBase + (nSlices - 1) * ppBase
  15. ReDim s.verts(s.nVerts - 1) As m3Point
  16. s.verts(0) = m3PointInit(0, r, 0)
  17. s.verts(s.nVerts - 1) = m3PointInit(0, -r, 0)
  18. pt = m3PointInit(0, r, 0)
  19. mZ = m3ZRotate(2 * PI / ppBase)
  20. mY = m3YRotate(2 * PI / ppBase)
  21.  
  22. ind = 1
  23.  
  24. For slice = 0 To nSlices - 1
  25.  
  26. m3PointApply pt, mZ
  27.  
  28. For i = 0 To ppBase - 1
  29.  
  30. s.verts(ind) = pt
  31. m3PointApply pt, mY
  32. ind = ind + 1
  33.  
  34. Next i
  35.  
  36. Next slice
  37.  
  38. ReDim s.faces(s.nFaces - 1) As m3Face
  39.  
  40. For i = 0 To ppBase - 1
  41.  
  42. s.faces(i).nLinks = 3
  43. ReDim s.faces(i).links(2) As Integer
  44. s.faces(i).links(0) = 0
  45. s.faces(i).links(1) = i + 1
  46. s.faces(i).links(2) = (i + 1) Mod ppBase + 1
  47. s.faces(i).color = &HFFFFFF
  48.  
  49. Next i
  50.  
  51. For slice = 0 To nSlices - 2
  52.  
  53. For i = 0 To ppBase - 1
  54.  
  55. ind = ppBase + slice * ppBase + i
  56.  
  57. s.faces(ind).nLinks = 4
  58. ReDim s.faces(ind).links(3) As Integer
  59.  
  60. s.faces(ind).links(0) = slice * ppBase + i + 1
  61. s.faces(ind).links(1) = ((slice + 1) * ppBase + i) Mod (ppBase * nSlices) + 1
  62. s.faces(ind).links(2) = ((i + 1) Mod ppBase + (slice + 1) * ppBase) Mod (ppBase * nSlices) + 1
  63. s.faces(ind).links(3) = (i + 1) Mod ppBase + slice * ppBase + 1
  64. s.faces(ind).color = &HFFFFFF
  65.  
  66. Next i
  67.  
  68. Next slice
  69.  
  70. For i = 0 To ppBase - 1
  71.  
  72. ind = i + s.nFaces - ppBase
  73.  
  74. s.faces(ind).nLinks = 3
  75. ReDim s.faces(ind).links(2) As Integer
  76. s.faces(ind).links(2) = s.nVerts - 2 - i
  77. s.faces(ind).links(1) = s.nVerts - 1
  78. s.faces(ind).links(0) = s.nVerts - 2 - (i + 1) Mod ppBase
  79. s.faces(ind).color = &HFFFFFF
  80.  
  81. Next i
  82. m3SphereInit = s
  83.  
  84. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement