How can I plot a combined of attached photos (triangular domain)?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Moein
el 20 de En. de 2016
Comentada: Stephen23
el 21 de En. de 2016
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 comentarios
Respuesta aceptada
Stephen23
el 20 de En. de 2016
Editada: Stephen23
el 20 de En. de 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 comentarios
Stephen23
el 21 de En. de 2016
I am glad to help. You can also Accept the answer that best resolves your question.
Más respuestas (1)
Mike Garrity
el 20 de En. de 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 comentarios
Star Strider
el 20 de En. de 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.
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!