that oldschool raycasting relies on the idea that you trace along a heightmap.
you start in every column on the bottom most pixel x0|y0 and trace it to the point where you hit the ground. at this moment you know, because it's a heightmap/terrain, every pixel in that column is at least traveling that far, so you offset the current ray, as if it was shoot from x0|y1 (which means you just adjust the current height value, you are at the same place of the heightmap), and you progress with the tracing/sampling of the heightmap. till you hit the ground again etc etc etc.
another way to think of it is, if you'd draw the rays for every pixel of column x0 on the heightmap, you would just see one line, because they all overlap.
So the only thing that really changes is just the height and at every step of the lines you can assume
now you know, if HeightmapSample(x0,y0,Step)<LineHeight(x0,y0,Step)
then HeightmapSample(x0,y...,Step) is smaller then all the other lines, as their height MUST be above the lowest line.
if you Hit the ground with the lowest line, you are done with it, you get the color of the terrain texture at that place and you place set it to the screen and you now progress with the line above till it hits the ground as you still know, if it doesn't, all lines above wouldn't.
and that's all the reason why 'rotating' wouldn't really fit into the idea. you would actually create none-overlapping rays per column. the problem is, it might be the case, that while the lowest line does not hit the ground yet, the line above, which is slightly rotated, would hit might hit the ground, as it samples next to the current heightmap sample.
I think a sheering won't make ur eyes bleed if you survived voxel raycaster, they are allready full of cheats, the perspective isn't that accurate (in exchange for speed) and the accuracy is often also not the best (and most of them also miss filtering).