Delete parts of plotted figures?

15 views (last 30 days)
I have made this image
with this code:
axis equal
hold on
caca=2*pi();
ang=linspace(0,caca);
xp=5*cos(ang);
yp=5*sin(ang);
circ=[xp;yp];
plot(xp,yp,'r');
L1=[-8 8; 3 3];
plot(L1(1,:),L1(2,:),'b')
And I want to delete the part of the line within the circle and the part of the circle under the line so the image results like this:
Is there any way of achieving that? How can I do it?

Accepted Answer

Star Strider
Star Strider on 23 Oct 2020
Try this:
axis equal
hold on
caca=2*pi();
ang=linspace(0,caca);
xp=5*cos(ang);
yp=5*sin(ang);
circ=[xp;yp];
L1x = linspace(-8, 8);
L1y = 3*ones(size(L1x));
L1=[L1x; L1y]; % Re-define Line
incirc = inpolygon(L1x,L1y,circ(1,:),circ(2,:));
L1(1,incirc) = NaN;
L1(2,incirc) = NaN;
plot(xp(yp>=3),yp(yp>=3),'r');
plot(L1(1,:),L1(2,:),'b')
.
  4 Comments
Star Strider
Star Strider on 28 Oct 2020
As always, my pleasure!

Sign in to comment.

More Answers (1)

Fangjun Jiang
Fangjun Jiang on 23 Oct 2020
use patch() or fill()? This one does part of it.
patch(xp,yp,'white')
  1 Comment
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras on 25 Oct 2020
I have tried that and appears and strange figure with black borders

Sign in to comment.

Categories

Find more on Visual Exploration in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!