For a visualization I need a combination of 3 Cylindrical segments to visualize the incident, reflected and refracted beam of light at a surface. I got as far as the following code.
Graphics3D[{
Polygon[{{-1.5, -1.5, 0}, {1.5, -1.5, 0}, {1.5, 1.5,0}, {-1.5, 1.5, 0}}],
Polygon[{{-1.5, 0, -1.5}, {1.5, 0, -1.5}, {1.5, 0, 1.5}, {-1.5, 0,1.5}}],
Opacity[0.5],
Cylinder[{{-1, 1, 0}, {0.2, -0.2, 0}}, 0.2],
Cylinder[{{-0.2, -0.2, 0}, {1, 1, 0}}, 0.2],
Scale[Cylinder[{{-0.05, 0.125, 0}, {0.5, -1, 0}}, 0.25], {1, 1,0.8}]
}]
results in the following output
Obviously, the remaining "stumps" of the cylinder segments on the respective other side of the reflection plane need to be removed. I do not want to go to too complex approaches like using Parametric surfaces or similar mathematical descriptions of a cylindrical segment, mainly for performance reasons (all of these methods are getting rather slow to plot). There is an interesting method documented in MathWorld, but the link to the ExtraPackages`Hidekazu`Knife`
package is broken, and the more recent link ends in 2007 too (checked through Wayback).
Maybe there are much simpler hacks to remove the unwanted cylinder areas?