0001 function writeMesh_off(fileName, vertices, faces)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 if ~ischar(fileName)
0019 error('First argument must contain the name of the file');
0020 end
0021
0022
0023 if isstruct(vertices)
0024 faces = vertices.faces;
0025 vertices = vertices.vertices;
0026 end
0027
0028
0029 f = fopen(fileName, 'wt');
0030 if (f == -1)
0031 error('Couldn''t open the file %s', fileName);
0032 end
0033
0034
0035 fprintf(f, 'OFF\n');
0036
0037
0038 nVertices = size(vertices, 1);
0039 nFaces = size(faces, 1);
0040 if iscell(faces)
0041 nFaces = length(faces);
0042 end
0043 fprintf(f, '%d %d 0\n', nVertices, nFaces);
0044
0045
0046 format = '%g %g %g\n';
0047 for iv = 1:nVertices
0048 fprintf(f, format, vertices(iv, :));
0049 end
0050
0051
0052 if isnumeric(faces)
0053
0054 ns = size(faces, 2);
0055 format = ['%d' repmat(' %d', 1, ns) '\n'];
0056 for iFace = 1:nFaces
0057 fprintf(f, format, ns, faces(iFace, :)-1);
0058 end
0059 else
0060
0061
0062 for iFace = 1:nFaces
0063 ns = length(faces{iFace});
0064 format = ['%d' repmat(' %d', 1, ns) '\n'];
0065 fprintf(f, format, ns, faces{iFace}-1);
0066 end
0067 end
0068
0069
0070 fclose(f);