NRBSPHERETILING:  Makes an array of NURBS patches representing a
                   full or partial tiling of the sphere.
                

 Calling Sequences:

   [tiling, tile, ver3d] = nrbspheretiling
   [tiling, tile, ver3d] = nrbspheretiling(topology)
   [tiling, tile, ver3d] = nrbspheretiling(topology, [radius], [center])
 
 INPUT:
 
   topology: String specifying the desired topology for the tiling.
           Options are:    - 'cube' (default)
                           - 'ico' for paired icosahedron (nonconforming)
                           - 'rdode' for rhombic dodecahedron
                           - 'rtria' for rhombic triacontahedron
                           - 'dico' for deltoidal icositetrahedron
                           - 'dhexe' for deltoidal hexecontahedron
                           - 'octant' for a tiling of the first octant

   radius: Radius of the sphere, default 1.0

   center: Center of the sphere, default (0,0,0)
 
 OUTPUT:

   tiling: Structure array of NURBS objects representing the tiling of the
           sphere.

   tile:   NURBS object representing one tile of the unit sphere. The tile
           will be a fourth-order rational Bezier patch.
 
   ver3d:  3-by-4 matrix with the coordinates of the 4 (ordered) vertices
           on the unit sphere, ordered clockwise when viewed from outside the
           sphere.
 
 See also: nrbspheretile

 For more details, see:
  Sander Dedoncker, Laurens Coox, Florian Maurin, Francesco Greco, Wim Desmet
  Bézier tilings of the sphere and their applications in benchmarking multipatch isogeometric methods
  Computer Meth. Appl. Mech. Engrg., 2018

 Copyright (C) 2017 Sander Dedoncker

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

Demonstration 1

The following code

 tiling = nrbspheretiling('cube');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical cubic tiling')

Produces the following figure

Figure 1

Demonstration 2

The following code

 tiling = nrbspheretiling('ico');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical icosahedral tiling')

Produces the following output

Note that the meshes of the icosahedral tiling are non-conforming

and the following figure

Figure 1

Demonstration 3

The following code

 tiling = nrbspheretiling('rdode');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical rhombic dodecahedral tiling')

Produces the following figure

Note that the meshes of the icosahedral tiling are non-conforming

and the following figure

Figure 1

Demonstration 4

The following code

 tiling = nrbspheretiling('rtria');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical rhombic triacontahedral tiling')

Produces the following figure

Note that the meshes of the icosahedral tiling are non-conforming

and the following figure

Figure 1

Demonstration 5

The following code

 tiling = nrbspheretiling('dico');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical deltoidal icositetrahedral tiling')

Produces the following figure

Note that the meshes of the icosahedral tiling are non-conforming

and the following figure

Figure 1

Demonstration 6

The following code

 tiling = nrbspheretiling('dico');
 figure
 hold on
 for ii = 1:length(tiling)
  nrbkntplot(tiling(ii), 10)
 end
 title('Spherical deltoidal hexecontahedral tiling')

Produces the following figure

Note that the meshes of the icosahedral tiling are non-conforming

and the following figure

Figure 1

Package: nurbs