我有 3 个向量,它们指定 3 空间中一条线上各个点的 X、Y 和 Z 坐标。我使用plot3绘制它们,即
plot3(X,Y,Z,'go-','LineWidth',4,'MarkerSize',32);
grid on
获取网格上的 3D 线对象。我希望能够使用 lightangle 之类的命令来更改对象上的照明,但它似乎只适用于使用 surf、mesh 等创建的对象。有没有人有一个好方法可以将我的线变成我的对象可以调节灯光吗?
谢谢,克里斯
线对象在 Matlab 中没有光照属性,但补丁边缘有。
绘制一条“线”
% NaNs make the patch effectively faceless, with only an edge
p = patch([X,nan], [Y,nan], [Z,nan], 'k', ...
'EdgeColor', 'g', 'EdgeLighting', 'Gouraud');
现在你有一个p
名为“line”的属性
p.VertexNormals % or get(p, 'VertexNormals') in pre-2014b
这定义了线的法线向量,其方向用于计算照明效果。默认情况下p.VertexNormals
将全部[0, 0, 1]
用于边缘,指向 Z 轴。您可以手动替换VertexNormals
以更改每个面片边缘顶点上的照明效果。
指向光的法线向量意味着物体上的一个点会显得更亮,那些指向远离的点会显得更暗。