coloring the area between three curves

2 Ansichten (letzte 30 Tage)
mukesh bisht
mukesh bisht am 15 Nov. 2021
Beantwortet: Pranjal Kaura am 24 Nov. 2021
Hi. I want to color the intersection region of three curves.
T1 = 180:0.1:270;
x1 = 3*cosd(T1); y1 = 3*sind(T1); % circle
T2 = 3.3620:0.001:3.9045;
c1 = 4.3123; c2 = -50.2708; c3 = 193.7277; c4 = -243.8411;
r_6 = c1*T2.^3 + c2*T2.^2 + c3*T2 + c4;
x2 = 1.1998 + r_6.*cos(T2); y2 = -0.8840 + r_6.*sin(T2); % region 4
x0 = 1.8977; y0 = 2.3235; vr = 4.0678;
beta = atan(y0/x0);
x3 = -2.0591:0.001:-1.8541; y3 = y0 + (x0-x3)*cot(beta) - (9.81*(x0-x3).^2)./(2*(vr*sin(beta))^2); % parabola
pgon1 = polyshape(x1,y1); % circle
pgon2 = polyshape(x2,y2); % region 4
pgon3 = polyshape(x3,y3); % parabola
pgon4 = intersect(pgon1,pgon2);
figure (4)
plot(x1,y1,x2,y2,x3,y3)
hold on
plot (intersect(pgon3,pgon4),'EdgeColor','none')
Actually, the fucntion :plot (intersect(pgon3,pgon4),'EdgeColor','none'); gives the error
Please suggest a way

Antworten (1)

Pranjal Kaura
Pranjal Kaura am 24 Nov. 2021
Hey Mukesh,
The common area between the polygons 'pgon3' and pgon4' isn't being plotted because the 'intersect' function doesn't find any common points between the 2 regions and thus returns an object having an empty matrix for 'Vertices' field, when you run
>> intersect(pgon3,pgon4)
To visualise your plots better, you can try plotting the polygon regions ('pgon1', 'pgon2' etc one after the other) and then decide which polygons to send to the 'intersect' function to compute the common points. You can refer the following code snippet:
>> figure
>> hold on
>> plot(pgon3)
>> plot(pgon1)
>> plot(pgon2)
You can check the 'Vertices' field of the 'polyshape' object that the function 'intersect' returns to confirm whether there are any common points.
Hope this helps!

Kategorien

Mehr zu Elementary Polygons finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by