How can i fill a designed 3d circle in an axes matlab GUI object?
2 次查看(过去 30 天)
显示 更早的评论
Hi everybody,
actually I've done a Matlab GUI with an object axes and a button. When i press the button, through a button callback, i draw a 3d circle through this function, passing the handles.axes:
function [crf] = EnvironmentSpace(origin_reference,index_col,figure_handles) %Draw the environment space with an enter circle shape acces point origin = origin_reference; radius = 0.10; %[m] angle = linspace(0,2*pi,150); crf(1,:) = origin(1)+radius*cos(angle); crf(2,:) = origin(2)+radius*sin(angle); crf(3,:) = origin(3);
col=hsv(128); index_trasp =0.5; h = figure_handles; plot3(h,crf(1,:),crf(2,:),crf(3,:),'-k','LineWidth',1); %fill3(crf(1,:),crf(2,:),crf(3,:),col(index_col,:), 'FaceAlpha',index_trasp); hold on;
I obatin the 3d circle in the axes object, but when i execute the fill3 instruction I obtain a filled circle in another figure and not in my axes object. I've already set the axes property 'NextPlot' with 'Add', but the problem still persists. I have the same problem with the command 'patch' for draw a 3d parallelepiped in the same axes object in which there is the 3d circle. Can anyone help me?
Morover, how can i set the X,Y,Z label, because in the axes object inspector i can't see the property XName or something like that, but only XLim,YLim,ZLim. Thanks in advance. Best regards.
Marco
0 个评论
采纳的回答
Aykut Satici
2014-9-2
I have written a UI that implements what you want by slightly modifying your code. You can find it in the attachment. I could not really reproduce the issue you are experiencing. Could you be passing the figure handle in the function rather than the axes handle?
Also, note that, "plot3" and "fill3" are high-level graphics functions. If the figure on which you are trying to plot has 'HandleVisibility' property 'off' (or 'Callback' and you are not in calling "plot3" from a callback), then "plot3" may open another figure. You can use the low-level versions "line" and "patch" of these to get the same results, as implemented in the comment section in the sample code in the attachment.
You can set the x,y,z labels by using the functions "xlabel", "ylabel", and "zlabel", respectively. If you provide the axes handle to these functions as their first argument, you can be sure they are going to label the correct axes object. Again, see the provided sample code.
0 个评论
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Properties 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!