Plane plotted with fimplicit3 fails to render

조회 수: 3 (최근 30일)
Matt J
Matt J 2024년 2월 5일
댓글: Adam Danz 2024년 10월 7일
load data E C ax
planefun=@(x,y,z) E(1)*x+E(2)*y+E(3)*z+E(4);
In the plot below, I successfully plot a point C and try to superimpose, with fimplicit3, the plot of a plane described by planefun. Since C nearly satisfies the plane equation,
planefun(C(1), C(2), C(3))
ans = -2.8422e-14
I think I should be able to see a portion of the plane in the figure (and it should pass through C), but I do not. Why?
plot3(C(1), C(2),C(3),'x'); axis(ax); hold on
fimplicit3(planefun,ax); hold off

채택된 답변

Matt J
Matt J 2024년 2월 6일
MathWorks Tech Support has classified this as a bug (Case #06788114)
  댓글 수: 1
Adam Danz
Adam Danz 2024년 10월 7일
Thanks for reporting this, @Matt J. As you've discovered in another thread, this bug was fixed in R2024b.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

akshatsood
akshatsood 2024년 2월 5일
I have noticed that you are experiencing difficulties with the 'fimplicit3' function during plotting. After attempting to replicate the issue, I encountered similar behavior. It appears that the problem stems from the axis limits defined by 'ax'. The 'fimplicit3' function requires an adequate range to properly visualize the surface where f(x,y,z) = 0 intersects the level f=0. In your instance, the provided 'ax' limits were insufficient, preventing the curve from rendering correctly.
Below is the revised code snippet with appropriate adjustments.
load data E C ax
planefun=@(x,y,z) E(1)*x+E(2)*y+E(3)*z+E(4);
plot3(C(1), C(2),C(3),'x','LineWidth',2,'Color','r');
hold on
f = fimplicit3(planefun,[-250 0]);
f.EdgeColor = 'none';
f.FaceAlpha = 0.8;
hold off
Have a look at the following references for a better understanding
I hope this helps.
  댓글 수: 1
Matt J
Matt J 2024년 2월 5일
편집: Matt J 2024년 2월 5일
I do thank you for undertaking to study this problem. However, I don't think the span of the axes could be the issue. Here is a modified example with the same axis range, except that C has been translated to (0,0,0). The plane renders fine,
load data E C ax
ax=ax-repelem(C',2);
planefun=@(x,y,z) E(1)*x+E(2)*y+E(3)*z;
plot3(0,0,0,'x','LineWidth',2,'Color','r');
hold on
f = fimplicit3(planefun,ax);
f.EdgeColor = 'none';
f.FaceAlpha = 0.8;
hold off

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

태그

제품


릴리스

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by