2 svar
47 visningar
Cien är nöjd med hjälpen
Cien 1138
Postad: 27 jan 2023 11:57 Redigerad: 27 jan 2023 14:05

Vill plotta en cylinder i rummet

Hej, har två ekvationer som jag vill rita upp för att studera skärningen.

x+2y+4z=4x+2y+4z=4

x2+4y2=4x^2+4y^2=4

Får inte till ekvation två. Vad jag har gjort är att göra en parametrisering där x=2costx=2cost och y=sinty=sint för 0t2π0 \leq t \leq 2\pi sen skriver jag koden:

% x^2+4y^2=4
t=linspace(0,2*pi);
x1=2*cos(t); y1=sin(t);
p = plot3(x1,y1,t);
p.LineWidth = 2;

Hur kan jag få ytan av en cylinder och inte en spiral? tänker att jag säkert måste använda surf, men får inte till det.

Edit: Fick till detta. Verkar funka. Hur kan jag göra så att cylindern sträcker sig lite längre upp än z=2? rör jag meshgrid så blir det kalabalik.

clf
clear
clc
[X,Z]=meshgrid(-2:0.1:2);
Y=abs(sqrt((4-X.^2)/4));
surface(X,Y,Z)
hold on
surface(X,-Y,Z)
axis equal
rotate3d on
zlim([-8 8])
Matsmats 567 – Livehjälpare
Postad: 27 jan 2023 14:34

Kanske såhär du vill göra? Du angav bara en dimension innanför meshgrid och då gör den likadant i båda dimensionerna.

[X,Z]=meshgrid(-2:0.1:2,-5:0.1:5);

>> help meshgrid

...

[X,Y] = meshgrid(x) is the same as [X,Y] = meshgrid(x,x), returning
square grid coordinates with grid size length(x)-by-length(x).

Cien 1138
Postad: 27 jan 2023 15:47
Matsmats skrev:

Kanske såhär du vill göra? Du angav bara en dimension innanför meshgrid och då gör den likadant i båda dimensionerna.

[X,Z]=meshgrid(-2:0.1:2,-5:0.1:5);

>> help meshgrid

...

[X,Y] = meshgrid(x) is the same as [X,Y] = meshgrid(x,x), returning
square grid coordinates with grid size length(x)-by-length(x).

Ja, tack! fungerade alldeles utmärkt!

Svara Avbryt
Close