如何在Matlab中创建一个3D线对象,我可以使用一个光对象来点亮它?

时间:2013-01-18 18:07:42

标签: matlab 3d line lighting

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

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

获取网格上的3D线对象。我希望能够使用像lightangle这样的命令来改变对象上的光照,但它似乎只适用于使用冲浪,网格等创建的对象。有没有人有一个很好的方法将我的线变成一个对象,我可以调整照明吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分: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”的“行”的属性

p.VertexNormals % or get(p, 'VertexNormals') in pre-2014b

这定义了线的法线向量,其方向用于计算照明效果。默认情况下,p.VertexNormals的所有边沿都指向[0, 0, 1],指向Z轴。您可以手动替换VertexNormals来更改每个面片边缘顶点上的照明效果。

指向光的法向矢量意味着对象上的一个点将变亮,而指向该点的那些将变暗。