我有一个大型的FEM模型,可以从中获取模型的“表面”(即定义该FEM模型表面的元素和顶点)。为了画出美观的图形,我想把它漂亮地绘制出来。我的方法只是使用
lungs.Vertex=vtx;
lungs.Faces=fcs;
patch(lungs,'facecolor','r','edgecolor','none')
注意:我需要边缘颜色无,因为这是4D数据,不同的FEM具有不同的三角化。如果绘制边缘,用户会感到头晕。
然而,这将输出一个非常平淡的红色,这样并不好(因为它不能展示图形的复杂性,这些是肺部,对于细节敏锐的人来说)。
因此,我决定使用光照:
camlight; camlight(-80,-10); lighting phong;
但是实际上,这并不完全正确。实际上,Matlab似乎没有正确计算补丁法线。
我的假设是,也许补丁并不总是逆时针定义的,因此有些法线朝着错误的方向。但是这是一件不容易检查的事情。
是否有人遇到过类似的问题,或者在如何解决这个问题以便在此处画出漂亮的表面图方面有什么提示?
编辑:为了绘图,请看@magnetometer答案得到的结果:
TR = triangulation(T,P);
和VN = vertexNormal(TR)
值得一看,但我现在无法测试它们。 - magnetometerfliplr(Faces(jj,:))
替换[Faces(jj,3) Faces(jj,2) Faces(jj,1)]
,它就可以处理非三角形面了。 - saastn