[未答复] 怎么将法向量的方向都指向三维点云的外侧啊

[复制链接]
2021012200 发表于 2022-11-22 09:29:55
clear;clc;
% 加载点云
ptCloud = pcread('pointCloud.pcd');
% 计算法向量
normals = pcnormals(ptCloud);

% 改成两个相邻的向量方向要一致
for i=1:size(normals(:,1))
    if(i>1)
        n1 = normals(i,:);
        n2 = normals(i-1,:);
        if(dot(n1,n2)<0)       % 如果这个向量与法向量的数量积为负数(反向)
            normals(i,:) = -normals(i,:);  % 法向量取反向
        end
    end
end

% 读取x,y,z
x = ptCloud.Location(:,1);
y = ptCloud.Location(:,2);
z = ptCloud.Location(:,3);
% uvw为法向量的三列
u = normals(:,1);
v = normals(:,2);
w = normals(:,3);
pcshow(ptCloud)
hold on
% 显示法向量
quiver3(x,y,z,u,v,w);
hold on

您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表