|Message: G4VSolid::DistanceToOut(p,v,...) for p on surface?||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
When trying to debug the G4TessellatedSolid problems I reported in another thread here, I have run up against some other problems, concerning DistanceToOut(p,v,...) when p lies on a surface. The User's Guide for Toolkit developers states that DistanceToOut(p,v,...) should behave as follows:
Return distance along the normalised vector v to the shape, from a point at an offset p inside or on the surface of the shape. Intersections with surfaces, when the point is not greater than kCarTolerance/2 from a surface, must be ignored.
I interpret that so that if we are close to a surface like that, the function should return the distance to the next outgoing intersection, if there is one.
E.g, if the solid is U-shaped, and the function is called for a point with p on the inner surface of the left hook, and v pointing right, it should ignore the first surface and return the distance to the right-hand outgoing surface. However, looking at G4UnionSolid::DistanceToOut(p,v,...), that function seems to return 0.0 if p lies on the outside half of the surface, regardless of whether the ray intersects any other surfaces later.
Am I missing something obvious here?
P.S. My code works a lot better (no FarOutsideCurrentVolume exceptions) when returning 0.0 for points on the surface - contrary to my interpretation of the users guide's description. D.S.
|Inline Depth:||Outline Depth:||Add message:|