1

我有 3 个向量,它们指定 3 空间中一条线上各个点的 X、Y 和 Z 坐标。我使用plot3绘制它们,即

plot3(X,Y,Z,'go-','LineWidth',4,'MarkerSize',32);
grid on

获取网格上的 3D 线对象。我希望能够使用 lightangle 之类的命令来更改对象上的照明,但它似乎只适用于使用 surf、mesh 等创建的对象。有没有人有一个好方法可以将我的线变成我的对象可以调节灯光吗?

谢谢,克里斯

4

1 回答 1

0

线对象在 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以更改每个面片边缘顶点上的照明效果。

指向光的法线向量意味着物体上的一个点会显得更亮,那些指向远离的点会显得更暗。

于 2019-07-29T14:18:32.343 回答