Help with 3D-plotting?
1 次查看(过去 30 天)
显示 更早的评论
So I have made this code that creates the shape I desire, but the top is open, and I want it to flat on the top. Any help would be appreciated. Thanks
if true
% code
end
%Constants
A=7/4;
L=1;
R=1;
%Solve for u_2
syms u
u_2=vpasolve(u*(-A-log(u)+u^2+3*u^4/4)*(1+u^2)^(-2)== L/R, u)
%x(u_2)=R rearranges to get C=...,
C=R*u_2/(1+u_2^2)^2
syms u
u_1=vpasolve(-log(u)+u^2+3*u^4/4 == A, u)
x_1=(C*(1+u_1^2)^2)/u_1
v= linspace (u_1,u_2);
X= C*((1+v.^2).^2)./v;
Y= L-C*(-A-log(v)+v.^2+(3*v.^4)/4);
plot(X,Y)
figure(1)
figure(2)
u1 = double(u_1)
u2 = double(u_2)
syms r v
colormap(bone)
x=fsurf(cos(r)*C*((1+v.^2).^2)./v, sin(r)*C*((1+v.^2).^2)./v,(L-C*(-A-log(v)+v.^2+(3*v.^4)/4)),[0,2*pi u1, u2])
title('R=1 L=1')
0 个评论
采纳的回答
Star Strider
2018-3-14
Tweak figure(2) by adding a patch call:
figure(2)
u1 = double(u_1)
u2 = double(u_2)
syms r v
colormap(bone)
x=fsurf(cos(r)*C*((1+v.^2).^2)./v, sin(r)*C*((1+v.^2).^2)./v,(L-C*(-A-log(v)+v.^2+(3*v.^4)/4)),[0,2*pi u1, u2])
hold on
rv = linspace(0,2*pi);
Radius = 0.35;
patch(Radius*cos(rv), Radius*sin(rv), ones(size(rv)), 'r') % <— ADD THIS ‘patch’ CALL, REFINE ‘Radius’
hold off
title('R=1 L=1')
I don’t know how you define the value for the radius of the top, so I guessed at one that sort of works. Tweak that, change the colour to something you want, and it should work. See the documentation for patch to tweak its properties.
2 个评论
Star Strider
2018-3-14
As always, my pleasure!
I’m not sure what to advise with respect to the colormap. That you’re using symbolic calculations and fplot makes that something of a challenge. Experiment using the last row of the colormap for the patch object colour. It could work!
更多回答(2 个)
Lewis Hancox
2018-3-14
1 个评论
Star Strider
2018-3-14
Good!
It likely would have been best for me to gave included that option, specifying a multiplier. It didn’t seem necessary originally.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surface and Mesh Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!