我有3个向量,它们指定3空间中一条线上各点的X,Y和Z坐标。我使用plot3绘制它们,即
plot3(X,Y,Z,'go-','LineWidth',4,'MarkerSize',32);
grid on
获取网格上的3D线对象。我希望能够使用像lightangle这样的命令来改变对象上的光照,但它似乎只适用于使用冲浪,网格等创建的对象。有没有人有一个很好的方法将我的线变成一个对象,我可以调整照明吗?
谢谢, 克里斯
答案 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
来更改每个面片边缘顶点上的照明效果。
指向光的法向矢量意味着对象上的一个点将变亮,而指向该点的那些将变暗。