MathDB
intersection of a conical surface and a plane is an ellipse

Source:

May 31, 2019
geometryconicsellipseSpheres

Problem Statement

A conical surface CC is cut by a plane TT as shown in the figure on the back of this sheet. Show that CTC \cap T is an ellipse. You can use as an aid the fact that if you consider the two spheres tangent to CC and TT as shown in the figure, they intersect TT in the bulbs.
[asy] // calculate intersection of line and plane // p = point on line // d = direction of line // q = point in plane // n = normal to plane triple lineintersectplan(triple p, triple d, triple q, triple n) { return (p + dot(n,q - p)/dot(n,d)*d); }
// projection of point A onto line BC triple projectionofpointontoline(triple A, triple B, triple C) { return lineintersectplan(B, B - C, A, B - C); }
// calculate area of space triangle with vertices A, B, and C real trianglearea(triple A, triple B, triple C) { return abs(cross(A - C, B - C)/2); }
// calculate incentre of space triangle ABC triple triangleincentre(triple A, triple B, triple C) { return (abs(B - C) * A + abs(C - A) * B + abs(A - B) * C)/(abs(B - C) + abs(C - A) + abs(A - B)); }
// calculate inradius of space triangle ABC real triangleinradius(triple A, triple B, triple C) { return 2*trianglearea(A,B,C)/(abs(B - C) + abs(C - A) + abs(A - B)); }
// calculate excentre of space triangle ABC triple triangleexcentre(triple A, triple B, triple C) { return (-abs(B - C) * A + abs(C - A) * B + abs(A - B) * C)/(-abs(B - C) + abs(C - A) + abs(A - B)); }
// calculate exradius of space triangle ABC real triangleexradius(triple A, triple B, triple C) { return 2*trianglearea(A,B,C)/(-abs(B - C) + abs(C - A) + abs(A - B)); }
unitsize(2 cm);
pair project (triple A, real t) { return((A.x, A.y*Sin(t) + A.z*Cos(t))); }
real alpha, beta, theta, t; real coneradius = 1, coneheight = 3; real a, b, c; real[] m, r; triple A, B, V; triple ellipsecenter, ellipsex, ellipsey; triple[] F, O, P, R, W; path[] ellipse, spherering;
theta = 15; V = (0,0,-coneheight);
m[1] = sqrt(Cos(theta)^2*coneheight^2 - Sin(theta)^2*coneradius^2)/coneradius; m[2] = -m[1]; alpha = -aTan(Sin(theta)/m[1]); beta = -aTan(Sin(theta)/m[2]) + 180; A = (coneradius*Cos(alpha), coneradius*Sin(alpha), 0); B = (coneradius*Cos(beta), coneradius*Sin(beta), 0);
W[1] = interp(V,(coneradius,0,0),0.6); W[2] = interp(V,(-coneradius,0,0),0.4); O[1] = triangleexcentre(V,W[1],W[2]); O[2] = triangleincentre(V,W[1],W[2]); r[1] = triangleexradius(V,W[1],W[2]); r[2] = triangleinradius(V,W[1],W[2]); F[1] = projectionofpointontoline(O[1],W[1],W[2]); F[2] = projectionofpointontoline(O[2],W[1],W[2]);
P[1] = O[1] - (0,0,r[1]*coneradius/sqrt(coneradius^2 + coneheight^2)); P[2] = O[2] - (0,0,r[2]*coneradius/sqrt(coneradius^2 + coneheight^2)); spherering[11] = shift(project(P[1],theta))*yscale(Sin(theta))*arc((0,0),r[1]*coneheight/sqrt(coneradius^2 + coneheight^2),alpha,beta); spherering[12] = shift(project(P[1],theta))*yscale(Sin(theta))*arc((0,0),r[1]*coneheight/sqrt(coneradius^2 + coneheight^2),beta,alpha + 360); spherering[21] = shift(project(P[2],theta))*yscale(Sin(theta))*arc((0,0),r[2]*coneheight/sqrt(coneradius^2 + coneheight^2),alpha,beta); spherering[22] = shift(project(P[2],theta))*yscale(Sin(theta))*arc((0,0),r[2]*coneheight/sqrt(coneradius^2 + coneheight^2),beta,alpha + 360);
ellipsecenter = (W[1] + W[2])/2; a = abs(W[1] - ellipsecenter); c = abs(F[1] - ellipsecenter); b = sqrt(a^2 - c^2); ellipsex = (W[1] - W[2])/abs(W[1] - W[2]); ellipsey = (0,1,0);
ellipse[1] = project(ellipsecenter + a*ellipsex, theta);
for (t = 0; t <= 180; t = t + 5) { ellipse[1] = ellipse[1]--project(ellipsecenter + a*Cos(t)*ellipsex + b*Sin(t)*ellipsey, theta); }
ellipse[2] = project(ellipsecenter - a*ellipsex, theta);
for (t = 180; t <= 360; t = t + 5) { ellipse[2] = ellipse[2]--project(ellipsecenter + a*Cos(t)*ellipsex + b*Sin(t)*ellipsey, theta); }
R[1] = ellipsecenter + 1*ellipsex + ellipsey; R[2] = ellipsecenter - 1.2*ellipsex + ellipsey; R[3] = ellipsecenter - 1*ellipsex - ellipsey; R[4] = ellipsecenter + 1.2*ellipsex - ellipsey;
fill(ellipse[1]--ellipse[2]--cycle, gray(0.9)); draw(yscale(Sin(theta))*Circle((0,0),coneradius)); draw(project(V,theta)--project(A,theta)); draw(project(V,theta)--project(B,theta)); draw(Circle(project(O[1],theta),r[1])); draw(Circle(project(O[2],theta),r[2])); draw(spherering[11], dashed); draw(spherering[12]); draw(spherering[21], dashed); draw(spherering[22]); draw(ellipse[1], dashed); draw(ellipse[2]); draw(project(R[1],theta)--interp(project(R[1],theta),project(R[2],theta),0.13)); draw(interp(project(R[1],theta),project(R[2],theta),0.13)--interp(project(R[1],theta),project(R[2],theta),0.76), dashed); draw(interp(project(R[1],theta),project(R[2],theta),0.76)--project(R[2],theta)); draw(project(R[2],theta)--project(R[3],theta)--project(R[4],theta)--project(R[1],theta));
label("CC", (-1,0.3)); label("TT", (1.2,-0.8)); dot(project(F[1],theta)); dot(project(F[2],theta)); //dot("F1F_1", project(F[1],theta)); //dot("F2F_2", project(F[2],theta)); //dot("O1O_1", project(O[1],theta)); //dot("O2O_2", project(O[2],theta)); //dot("P1P_1", project(P[1],theta)); //dot("VV", project(V,theta)); //dot("W1W_1", project(W[1],theta)); //dot("W2W_2", project(W[2],theta)); [/asy]