MATLAB: How to plot conic sections in a 3D cone and extract certain parts of the graph

3d3d cone3d plotsconic sectionsconicsextractextract datagraphpowerful simulation

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)

Best Answer

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')