How can I plot a combined of attached photos (triangular domain)?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi friends
I plotted some figures using followin code with several Delta:
delta = 0.05;
[z, y] = meshgrid(0:delta:0.8660254, -0.5:delta:0.5);
s = (0.1069166660e0 .* (0.36e2 .* (z - sqrt(0.3e1) ./ 0.2e1) .^ 2 .* y .^ 2 + (0.3e1 .* y .^ 2 - z .^ 2 - 0.2e1 .* (z - sqrt(0.3e1) ./ 0.2e1) .* z) .^ 2) ./ (0.370370196e0 .* (z - sqrt(0.3e1) ./ 0.2e1) .* (0.3e1 .* y .^ 2 - z .^ 2) + 0.1e1) + 0.1e1) ./ (0.370370196e0 .* (z - sqrt(0.3e1) ./ 0.2e1) .* (0.3e1 .* y .^ 2 - z .^ 2) + 0.1e1);;
s(y<-0.5773502692.*z) = NaN;
s(y>0.5773502692.*z) = NaN;
surf(z, y, s,'FaceColor','interp','FaceLighting','phong');
the following figures have been plotted using delta=0.005, 0.005, 0.05 and 0.01, respectively.
As it is obvious, the boundary of triangular domain is good in 1st and 2nd figures but their Edges is so high which if i show them, the figure's color will be black!
about the third figure, the number of edges is good but its boundary is so bad.
I want to generate the combining of 1st figure and the figure with similar edge density to 3rd figure.
If you know please answer to my question as simple as you can.
Thanks a lot
0 commentaires
Réponse acceptée
Stephen23
le 20 Jan 2016
Modifié(e) : Stephen23
le 20 Jan 2016
You could try plotting both of them on the same axes:
funZY = @(d) meshgrid(0:d:0.8660254, -0.5:d:0.5);
funS = @(z,y) (0.1069166660e0 .* (0.36e2 .* (z - sqrt(0.3e1) ./ 0.2e1) .^ 2 .* y .^ 2 + (0.3e1 .* y .^ 2 - z .^ 2 - 0.2e1 .* (z - sqrt(0.3e1) ./ 0.2e1) .* z) .^ 2) ./ (0.370370196e0 .* (z - sqrt(0.3e1) ./ 0.2e1) .* (0.3e1 .* y .^ 2 - z .^ 2) + 0.1e1) + 0.1e1) ./ (0.370370196e0 .* (z - sqrt(0.3e1) ./ 0.2e1) .* (0.3e1 .* y .^ 2 - z .^ 2) + 0.1e1);
funN = @(z,y) y<(-0.5773502692.*z) | y>(0.5773502692.*z);
[surfZ,surfY] = funZY(0.0005);
[gridZ,gridY] = funZY(0.05);
surfS = funS(surfZ,surfY);
gridS = funS(gridZ,gridY);
surfS(funN(surfZ,surfY)) = NaN;
gridS(funN(gridZ,gridY)) = NaN;
surf(surfZ, surfY, surfS,'FaceColor','interp','FaceLighting','phong','EdgeColor','none');
hold on
surf(gridZ, gridY, gridS,'FaceColor','none','FaceLighting','phong');
view(43,20)
4 commentaires
Stephen23
le 21 Jan 2016
I am glad to help. You can also Accept the answer that best resolves your question.
Plus de réponses (1)
Mike Garrity
le 20 Jan 2016
Basically you want the technique I used in this blog post about surface interpolation. You want to draw the high-res one with FaceColor='interp' and EdgeColor='none'. Then, with hold on, you draw the low-res one with FaceColor='none' and EdgeColor='black'. They're not going to line up perfectly around the nans though.
3 commentaires
Star Strider
le 20 Jan 2016
Save it somewhere on your MATLAB search path as interpsurf.m (in its own .m-file). You should then be able to call it without error.
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!