资源简介
此程序可以焊好的读取STL文件,可以输出F(面数),V(顶点),N(三角面片的法向量)等,可以稳定输出
代码片段和文件信息
function varargout = stlread(file)
% 读取STL模型
if ~exist(file‘file‘)%判断文件是否存在
error([‘File ‘‘%s‘‘ not found. If the file is not on MATLAB‘‘s path‘ ...
‘ be sure to specify the full path to the file.‘] file);
end
fid = fopen(file‘r‘);
if ~isempty(ferror(fid))
error(lasterror); %#ok
end
M = fread(fidinf‘uint8=>uint8‘);%进行读取
fclose(fid);
[fvn] = stlbinary(M);
%if( isbinary(M) )
% [fvn] = stlbinary(M);
%else
% [fvn] = stlascii(M);
%end
varargout = cell(1nargout);%函数输出
switch nargout
case 2
varargout{1} = f;%f为面(face)
varargout{2} = v;%v为顶点坐标(vertices)
case 3
varargout{1} = f;
varargout{2} = v;
varargout{3} = n;%为面的法向量
otherwise
varargout{1} = struct(‘faces‘f‘vertices‘v);
end
end
function [FVN] = stlbinary(M)
F = [];
V = [];
N = [];
if length(M) < 84
error(‘MATLAB:stlread:incorrectFormat‘ ...
‘Incomplete header information in binary STL file.‘);
end
% 字节81-84为一个无符号的32位整数,用于指定后面的面数。
numFaces = typecast(M(81:84)‘uint32‘);
%numFaces = double(numFaces);
if numFaces == 0 %判断STL模型中的面熟
warning(‘MATLAB:stlread:nodata‘‘No data in STL file.‘);
return
end
T = M(85:end);
F = NaN(numFaces3);
V = NaN(3*numFaces3);%一个三角面片三个顶点,顶点数为面数的
相关资源
- matlab读取二维DXF文件
- 基于matlab的应用图像处理进行癌细胞
- 人工免疫算法寻优最大值
- MATLAB求解SEIR模型.zip
- MATLAB中的harq重传
- matlab解决旅行者问题的三种算法遗传
- 集成学习方法matlab实现
- MIT数据库的心电信号预处理matlab程序
- delta机械手工作空间matlab程序
- MATLAB_EOF.zip
- 车牌识别的matlab程序
- 阵列天线切比雪夫分布幅度计算
- GA+SVM的MATLAB程序
- 牛顿拉夫逊法解潮流计算MATLAB程序附
- SAR ADC模型
- 曲面拟合程序MATLAB
- 差分方程的阻滞增长模型 matlab
- 小波神经网络matlab详细代码
- 多目标perota优化MATLAB算法
- 概率数据关联算法matlab程序.zip
- 车牌号识别程序,基于matlab可直接运
- matlab单纯形法程序
- 基于dft的图像压缩matlab实现
- 粒子群SVM.rar
- MATLAB实现SVPWM
- matlab-朴素贝叶斯-鸢尾花数据集
- LSTM-regression-master.zip
- LSTM算法推导及代码.zip
- 一维高斯随机粗糙面建模.zip
- 贝叶斯分类Matlab代码
评论
共有 条评论