
Yes it does !
So your problem is something like this:
P v
+.
+ Pn
Sideways View

 /
Poly1  + Pn
 /
 /
/
. v
/
P / 
+  Poly 2

Edge (common)
Top View

Basicly, what you have is a line between point P and Pn, and you want to wrap that line on the existing polys, right ?
You have to take an important fact into account, the Point Pn, may not be on an imediatly adjacent polygon either, depending on radius and polygon sizes.
You can search for texture splat and clipping for similar computation needs.
In my view, it's a recursive process, where you have something like this (in Pseudo Code)
function drawWrapLine ( p0, p1, roly )
{
cliPoint = ClipLine_with_currPoly ( p0, p1, poly)
if ( clipPoint exists )
{
drawLine ( P0, clipPoint )
adjPoly = get_adjacent_poly_on_point( clipPoint )
pr0 = findPointProjectionInPolyPlane( clipPoint, adjPoly)
// Recurse
drawWrapLine( pr0, p1, newPoly )
}
else
drawLine ( p0, p1 )
}

NOTE 1: clipPoint "v" in ASCII drawing . NOTE 2: The result of function findPointProjectionInPolyPlane is in the same infinite plane as newPoly, but it may not be inside the poly, hence the need for recursion.
I believe your question is: How to implement function "findPointProjectionInPolyPlane" ?
Depending on the importance of using the actual radius or an aproximation: 1  You could try to just project p1 into the newPoly, but this will distort distance (radius) depending on the manifold polys angle. 2  If you want the length of the clip line to be exactly the radius, then you have to rotate p1 using the common edge. 3  if you want the exact 3D Radius from the original particle, you have to use a sphere (of the specififed radius) and intersect it with the newPoly, which will give you a curve (equation) that you can solve by using a system, by adding an extra equation (line equation) that will restrict your result to a single value. Basicly this is similar to solution 2, but to get the correct radius, you have to do some extra work.
Hope this helps, in your quest.
