Given two cone surfaces with common vertex O in 3D:
Given are: Coordinates of point O Vectors OP, OL (OL is height for the green cone), OR (height of the blue cone), OC
I would like to know the angles P1RC and CRP2
My current approach is the following: Normalize vector OL (length = 1) Build a plane through L perpendicular to OL. That plane intersects the blue cone which results in creating an ellipse with center R and intersects the green cone in a circle with radius LP and center L. Now I have to find the intersecting points P1 and P2 in the built plane and knowing them I can find angles P1RC and CRP2. How to find the intersecting points of the circle and the ellipse P1 and P2 using Mathematica's functionalities?
N.B: The two cone planes will always be intersecting this way.
Here is Mathematica code that does the set-up in the picture above:
\[CapitalOmega] = {0, 0, 2};
rC1 = 1; rC2 = 2;
C1 = Cone[{{0, 0, -1}, \[CapitalOmega]}, rC1];
C2 = Cone[{{1, 1, -1}, \[CapitalOmega]}, rC2];
S = InfinitePlane[{0, 0, 0}, {{1, 0, 0}, {0, 1, 0}}];
L = RegionIntersection[InfiniteLine[{\[CapitalOmega], {0, 0, -1}}], S];
R = RegionIntersection[InfiniteLine[{\[CapitalOmega], {1, 1, -1}}], S];
iCP = RegionIntersection[C1, C2, S];
iCPD = iCP // DiscretizeRegion;
P1 = {-(Sqrt[2]/3), Sqrt[2]/3, 0}; P2 = {Sqrt[2]/3, -(Sqrt[2]/3), 0};
Graphics3D[{
{Opacity[0.3], Darker@Green, C1},
{Opacity[0.3], Darker@Blue, C2},
{Opacity[0.5], LightRed, S},
PointSize[0.01],
Blue, L, Black, Text["L", L[[1]], {1, 1}],
Blue, R, Black, Text["R", R[[1]], {1, 1}],
Blue, Point[\[CapitalOmega]], Black,
Text["O", \[CapitalOmega], -{1, 1}],
Red, Point[P1], Black, Text["P1", P1, {1, 1}],
Red, Point[P2], Black, Text["P2", P2, {1, 1}],
White, Line[{\[CapitalOmega], R[[1]]}],
Line[{\[CapitalOmega], L[[1]]}], Line[{\[CapitalOmega], P1}],
Line[{\[CapitalOmega], P2}], Line[{R[[1]], P1}], Line[{R[[1]], P2}]
}, Lighting -> "Neutral", Boxed -> False]
(Using [CaptialOmega] because O is protected and easily confused with 0.)