Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Function m3SphereInit(ByVal ppBase As Integer, ByVal r As Double) As m3Solid
- Dim s As m3Solid
- Dim nSlices As Integer
- Dim pt As m3Point
- Dim mZ As m3Matrix
- Dim mY As m3Matrix
- Dim ind As Integer
- Dim slice As Integer
- Dim i As Integer
- nSlices = (ppBase - 2) / 2
- s.nVerts = 2 + ppBase * nSlices
- s.nFaces = 2 * ppBase + (nSlices - 1) * ppBase
- ReDim s.verts(s.nVerts - 1) As m3Point
- s.verts(0) = m3PointInit(0, r, 0)
- s.verts(s.nVerts - 1) = m3PointInit(0, -r, 0)
- pt = m3PointInit(0, r, 0)
- mZ = m3ZRotate(2 * PI / ppBase)
- mY = m3YRotate(2 * PI / ppBase)
- ind = 1
- For slice = 0 To nSlices - 1
- m3PointApply pt, mZ
- For i = 0 To ppBase - 1
- s.verts(ind) = pt
- m3PointApply pt, mY
- ind = ind + 1
- Next i
- Next slice
- ReDim s.faces(s.nFaces - 1) As m3Face
- For i = 0 To ppBase - 1
- s.faces(i).nLinks = 3
- ReDim s.faces(i).links(2) As Integer
- s.faces(i).links(0) = 0
- s.faces(i).links(1) = i + 1
- s.faces(i).links(2) = (i + 1) Mod ppBase + 1
- s.faces(i).color = &HFFFFFF
- Next i
- For slice = 0 To nSlices - 2
- For i = 0 To ppBase - 1
- ind = ppBase + slice * ppBase + i
- s.faces(ind).nLinks = 4
- ReDim s.faces(ind).links(3) As Integer
- s.faces(ind).links(0) = slice * ppBase + i + 1
- s.faces(ind).links(1) = ((slice + 1) * ppBase + i) Mod (ppBase * nSlices) + 1
- s.faces(ind).links(2) = ((i + 1) Mod ppBase + (slice + 1) * ppBase) Mod (ppBase * nSlices) + 1
- s.faces(ind).links(3) = (i + 1) Mod ppBase + slice * ppBase + 1
- s.faces(ind).color = &HFFFFFF
- Next i
- Next slice
- For i = 0 To ppBase - 1
- ind = i + s.nFaces - ppBase
- s.faces(ind).nLinks = 3
- ReDim s.faces(ind).links(2) As Integer
- s.faces(ind).links(2) = s.nVerts - 2 - i
- s.faces(ind).links(1) = s.nVerts - 1
- s.faces(ind).links(0) = s.nVerts - 2 - (i + 1) Mod ppBase
- s.faces(ind).color = &HFFFFFF
- Next i
- m3SphereInit = s
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement