How would I plot conic sections in a 3D cone and extract certain parts of the graph?
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Satwik Misra
el 21 de Jun. de 2019
Comentada: Matt J
el 21 de Jun. de 2019
I'm a beginner and I don't have much MATLAB expericence, but I'm trying to draw different conic sections in a 3d cone and then extract just the intersection of the plane and the cone in order to highlight the different conics (parabolas, hyperbolas, etc) that are formed? Specifically, how would I simply extract the intersection between a plane and the cone?
It would be especially helpful if answers and code were in a simpler and more understandable format tailored to a beginner like me.
Thanks
Here is my current code
r = linspace(0,2*pi) ;
th = linspace(0,2*pi) ;
[R,T] = meshgrid(r,th) ;
X = R.*cos(T) ;
Y = R.*sin(T) ;
Z = R;
surf(X,Y,Z)
patch([2 -2 -2 2], [2 2 -2 -2], [2 2 2 2], [2 2 -2 -2])
hold on
surf(-X,-Y,-Z)
1 comentario
darova
el 21 de Jun. de 2019
Use the same X and Y for plane. Use contour() to calculate intersection
Look HERE
Respuesta aceptada
Matt J
el 21 de Jun. de 2019
Editada: Matt J
el 21 de Jun. de 2019
The easiest would be to have the plane fixed as the xy-plane and just rotate/translate the cone around in 3D space to get different sections,
[R,~]=qr(rand(3)); %random rotation
R=R*det(R);
D=diag([1,1,-1]);
fcone=@(x,y,z)sum([x;y;z+1].*R.'*D*R*[x;y;z+1]); %3D cone
fsec= @(x,y) sum([x;y;1].*R.'*D*R*[x;y;1]); %2D intersection of cone with xy plane
hc=fimplicit3(fcone); %plot 3D cone
hc.MeshDensity=15;
hc.EdgeColor='none';
hc.FaceAlpha=0.1;
hold on
hsec=fimplicit(fsec); %plot section
hold off
legend('Cone','Section')


2 comentarios
Matt J
el 21 de Jun. de 2019
No. Each plot corresponds to a different R, randomly selected in this code.
Más respuestas (0)
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!