Beschattung funktioniert nicht mit patches die Angabe von Gesicht Farben?
Ich verstehe nicht, warum der folgende code löst eine Warnung:
% mesh of a plane at z=0 for x,y in [0,5] with 20 vertices per side
n = 20;
[x,y] = ndgrid( linspace(0,5,n) );
x = x(:); y = y(:); z = zeros(n^2,1);
% triangulation to obtain faces, and draw a patch with random color for each face
F = delaunay(x,y);
V = [x,y,z];
patch( 'Vertices', V, 'Faces', F, 'FaceVertexCData', rand( size(F,1), 1 ) );
axis tight; grid on; box off;
% faceted shading works fine, but interp doesn't seem to work
shading('faceted'); % works fine
shading('interp'); % throws a warning
Warning: Error creating or updating Patch
Error in value of property FaceVertexCData
Number of colors must equal number of vertices
Hoffentlich die Kommentare sind genug Erklärung, um zu verstehen, das Thema-aber nur kurz, es scheint, dass die interpolation Gesicht Farbe nicht funktioniert, wenn die Eigenschaft FaceVertexCData
gibt die Farben der Flächen und keine Ecken.
Als Warnmeldung angezeigt, wenn Sie verwenden möchten die
'interp'
shading-Methode, die Sie benötigen, um IhreFaceVertexCData
haben einen Eintrag für jede vertex. Derzeit haben Sie einen Eintrag für jedes Gesicht.Dies ist nicht ein Problem oder ist das ein bug, weil
shading
legt dieFaceColor
Eigenschaft des patch-Objekts zu'interp'
die explizit verlangt, dass ein Eintrag inFaceVertexCData
für jeden vertex.FaceVertexCData
für jedes Gesicht, und die Dokumentation fürshading
nicht nennen keine besonderen Problem mit der optioninterp
. Glaubst du, das ist ein bug, und wenn nicht, warum wäre es keine Erwähnung über dieses Thema in der Dokumentation?FYI, wenn Sie wollen, zu konvertieren, ein Vektor, der die Farben für jede Fläche zu einem Vektor von Farben für jeden Eckpunkt, können Sie folgende Funktion verwenden:
Diese Funktion nimmt in Eingang:
Nfaces x 1
Spalten-Vektor von Farbencdata
,Nfaces x 3
array von vertex-Indizes (ein Dreieck pro Zeile),und gibt einen
Nvertices x 1
Spalten-Vektor von Farben, so dass für jeden vertex, die Farbe ist gemittelt über die Flächen, enthalten.