I ended up having to create a very trigonometry heavy module to accomplish this goal. Below is the code, which I hope saves some people a few hours.
module ObliqueCylinder(height = 1, radius = 1, angle = 0, faces = 360) { theta = angle; m = radius * sin(theta); k = radius * sin(2 * theta); l = radius * pow(sin(theta), 2); hPrime = height/cos(theta) + 2 * m; difference() { translate([0, -l, -1/2 * k]) { rotate(a = [-theta, 0, 0]) { linear_extrude(height = hPrime) { rotate(a = [theta, 0, 0]) { circle(r = radius, $fn = faces); } } } } translate([0, 0, -1/2 * k]) { cube(size = [2 * radius, 2 * radius, k], center = true); } translate([0, height * tan(theta), height + k/2]) { cube(size = [2 * radius, 2 * radius, k], center = true); } } }