pointCloud Import of point cloud data.
  ----------------------------------------------------------------------
  DESCRIPTION/NOTES        
  This function creates an object instance of the pointCloud class. For
  a listing of available attributes and methods for the pointCloud class
  run 'doc pointCloud'.
  ----------------------------------------------------------------------
  INPUT
  1 [pcData]
    Point cloud input data defined as:
    a PATH TO A POINT CLOUD FILE
      Absolute or relative path to a:
      1 PLAIN TEXT FILE
        Column oriented text file where each row correspondonds to one
        point. The first 3 columns contain the point coordinates x, y
        and z. Further columns can be used for point attributes (e.g.
        color values r, g and b). Two possibilities exist to define the
        names of the attributes:
          * by using the parameter 'Attributes' (see below) 
          * by defining the attribute names in the first line of the
            file using the following format: 
            '# columns: x y z attributeName1 attributeName2 ...'
      2 BINARY FILE
        In binary files all values have to be stored in double precision
        (i.e. 8 bytes per value). All values are stored sequentially
        (e.g. for two points with one attribute the ordering would be
        x1, y1, z1, a1, x2, y2, z2, a2).
      3 LAS/LAZ FILE
        For reading las or laz files the function 'las2mat' must be
        accessible on the path. It can be downloaded here:
        https://github.com/plitkey/matlas_tools
      4 ODM FILE
        Files created with OPALS (http://geo.tuwien.ac.at/opals). For
        this it is necessary to:
        1) Install OPALS
        2) Add '%opals_root%\opals' to the search path in Matlab.
        Note: with the 'Filter' parameter, an odm filter string can be 
        applied during the import.
      5 PLY FILE
        Polygon file format, either in ascii or binary format.
      6 MAT FILE
        This method can also be used to load a mat file generated with
        the 'save' method of this class. For more details run
        'help pointCloud.save'.
    b MATRIX CONTAINING POINT CLOUD DATA
      A matrix of size n-by-3+a. Each row corresponds to one point, i.e.
      n is the total number of points. The first 3 columns contain the
      point coordinates x, y and z. Further columns can be used for
      point attributes (e.g. color values r, g and b). To import these
      attributes the parameter 'Attributes' has to be defined (see
      below).
 
  2 ['Attributes', attributes]
    Name of attributes contained in input data defined as 1-by-a cell,
    where a denotes the number of attributes. Predefined attribute names
    to use for extended functionality:
      * 'nx'        = normal x component
      * 'ny'        = normal x component
      * 'nz'        = normal z component
      * 'r'         = color red component
      * 'g'         = color green component
      * 'b'         = color blue component
      * 'roughness' = roughness in point neighborhood
    Imported attributes are saved into the property A of the pointCloud
    object, i.e. obj.A.
    Additionally, for LAS/LAZ, ODM and PLY files the following applies:
    - If the parameter 'Attributes' is not defined by the user, all 
      non-empty attributes are imported.
    - If the name of one or more attribute is specified by the parameter
      'Attributes', only these are imported.
    - If the parameter 'Attributes' is set to an empty cell, i.e. {}, NO
      attributes are imported.
 
  3 ['Label', label]
    Label of point cloud defined as a string. If no label is defined and
    input is a file path, the file name is used as label.
 
  4 ['RedPoi', redPoi]
    Coordinate reduction point defined as vector with 3 elements. The
    reduction point defines the origin of a local coordinate system in
    which the points are stored.
 
  5 ['HeaderLines', headerLines]
    Number of header lines (=rows) to be skipped, if a plain text file
    is used as point cloud input.
  ----------------------------------------------------------------------
  OUTPUT
  1 [obj]
    Object instance of class pointCloud.
  ----------------------------------------------------------------------
  EXAMPLES
  1 Import a point cloud without attributes.
    pc = pointCloud('Lion.xyz');
    pc.plot;
 
  2 Import a point cloud with attributes.
    pc = pointCloud('Gieszkanne.xyz', 'Attributes', {'r' 'g' 'b'});
    % Attributes are now accessible in the object property pc.A
    pc.plot('Color', 'rgb', 'MarkerSize', 5);
 
  3 Import a point cloud from a matrix.
    [x, y, z] = sphere(100);
    x = x(:); y = y(:); z = z(:);
    pc = pointCloud([x y z], 'Label', 'sphere');
    pc.plot('MarkerSize', 5);
  ----------------------------------------------------------------------
  philipp.glira@gmail.com
  ----------------------------------------------------------------------