* For the ellipsoid equation $$\frac{(x-\text{p1})^2}{\text{a1}^2}+\frac{(y-\text{p2})^2}{\text{a2}^2}+\frac{(z-\text{p3})^2}{\text{a3}^2}=1$$ and a point (pole ) `{o1,o2,o3}`, it's polar plane just has the form $$\frac{(\text{o1}-\text{p1}) (x-\text{p1})}{\text{a1}^2}+\frac{(\text{o2}-\text{p2}) (y-\text{p2})}{\text{a2}^2}+\frac{(\text{o3}-\text{p3}) (z-\text{p3})}{\text{a3}^2}=1$$ The main reasion is that the the normal vector of the tangent plane of such ellipsoid is ``` Clear["Global`*"]; f[x_, y_,z_] := (x - p1)^2/a1^2 + (y - p2)^2/a2^2 + (z - p3)^2/a3^2 - 1; Grad[f[x, y, z], {x, y, z}] ``` $$\left\{\frac{2 (x-\text{p1})}{\text{a1}^2},\frac{2 (y-\text{p2})}{\text{a2}^2},\frac{2 (z-\text{p3})}{\text{a3}^2}\right\}$$ and the direction of the tangent lines is orthogonal to such normal vector. ``` Clear["Global`*"]; center = {p1, p2, p3} = {0.2, .4, .8}; axes = {a1, a2, a3} = {.8, .4, .5}; pole = {o1, o2, o3} = {0, 0, 0}; f[x_, y_, z_] := (x - p1)^2/a1^2 + (y - p2)^2/a2^2 + (z - p3)^2/a3^2 - 1; polar[x_, y_, z_] := ((x - p1) (o1 - p1))/a1^2 + ((y - p2) (o2 - p2))/ a2^2 + ((z - p3) (o3 - p3))/a3^2 - 1; ellipsoid = ContourPlot3D[ f[x, y, z] == 0 // Evaluate, {x, p1 - a1, p1 + a1}, {y, p2 - a2, p2 + a2}, {z, p3 - a3, p3 + a3}, MeshFunctions -> Function[{x, y, z}, polar[x, y, z]], Mesh -> {{0}}, MeshShading -> {Directive@{Opacity[.5], Green}, Directive@{Opacity[.5], Blue}}, MeshStyle -> Directive@{Thick, Yellow}, BoxRatios -> Automatic, Boxed -> False, Axes -> False]; polarplane = ContourPlot3D[ polar[x, y, z] == 0 // Evaluate, {x, p1 - a1, p1 + a1}, {y, p2 - a2, p2 + a2}, {z, p3 - a3, p3 + a3}, Mesh -> None]; point = Graphics3D[{Red, AbsolutePointSize[5], Point@{o1, o2, o3}}]; pts = MeshPrimitives[ DiscretizeRegion[ ImplicitRegion[{f[x, y, z] == 0, polar[x, y, z] == 0}, {x, y, z}]], 1][[;; , 1]][[;; , 1]]; index = FindShortestTour@pts // Last; cone = Graphics3D[{EdgeForm[], FaceForm[Yellow], Opacity[.8], Polygon /@ (Join[{{o1, o2, o3}}, #] & /@ Partition[pts[[index]], 2, 1])}]; Show[ellipsoid, polarplane, point, cone, PlotRange -> All] ``` [![enter image description here][1]][1] and the areas of the two parts (blue and green) are ``` area1 = ImplicitRegion[{f[x, y, z] == 0, polar[x, y, z] >= 0}, {x, y, z}] // Area; area2 = ImplicitRegion[{f[x, y, z] == 0, polar[x, y, z] <= 0}, {x, y, z}] // Area; {area1, area2} ``` > `{0.970791, 2.96791}` * Such method also work for the 2D cases. In the 2D cases is just the polar of the quadratic curves. ``` Clear["Global`*"]; center = {p1, p2} = {0.2, .4}; axes = {a1, a2} = {.8, .4}; pole = {o1, o2} = {-1, -.5}; f[x_, y_] := (x - p1)^2/a1^2 + (y - p2)^2/a2^2 - 1; polar[x_, y_] := ((x - p1) (o1 - p1))/a1^2 + ((y - p2) (o2 - p2))/a2^2 - 1; ellipsoid = ContourPlot[ f[x, y] == 0 // Evaluate, {x, p1 - a1, p1 + a1}, {y, p2 - a2, p2 + a2}, MeshFunctions -> Function[{x, y}, polar[x, y]], Mesh -> {{0}}, AspectRatio -> Automatic, Axes -> False]; polarline = ContourPlot[ polar[x, y] == 0 // Evaluate, {x, p1 - a1, p1 + a1}, {y, p2 - a2, p2 + a2}, Mesh -> None]; pts = {x, y} /. NSolve[{f[x, y] == 0, polar[x, y] == 0}, {x, y}]; g = Graphics[{Red, AbsolutePointSize[5], Point@{o1, o2}, HalfLine[{{o1, o2}, pts[[1]]}], HalfLine[{{o1, o2}, pts[[2]]}]}]; Show[ellipsoid, polarline, g, PlotRange -> All] length1 = ImplicitRegion[{f[x, y] == 0, polar[x, y] >= 0}, {x, y}] // ArcLength; length2 = ImplicitRegion[{f[x, y] == 0, polar[x, y] <= 0}, {x, y}] // ArcLength; {length1, length2} ``` [![enter image description here][2]][2] > `{1.51619, 2.35919}` [1]: https://i.sstatic.net/51dj1Q3H.png [2]: https://i.sstatic.net/DduQgLS4.png