On Thu, 21 Nov 2002 13:16:52 EST, Mark Mielke said: > To rotate text, do the following: > > 1) Draw the text onto an offscreen image area. > > 2) For each pixel: > > 2a) Determine the offset and angle for the pixel from the 'center'. > > 2b) Plot the pixel (with transparency taking into account that the > rectangular pixel is no longer up-right) the same offset > from the 'center' of the new image, but at a difference angle. > > 3) Draw the offscreen image area onto the screen as many times as you > need to.
I'm told (but haven't tested) that you get better results and less aliasing
artifacts if you do it in reverse:
for each *destination* pixel
determine the source pixel that is needed
plot the source into the destination.
This avoids rounding-error artifacts where you get "wedges" where the source
pixels don't map quite right to destinations - if you work from source to
destination, it's possible that two adjacent pixels will map to 2 not-quite
adjacent destination pixels, leaving you a stray empty pixel in between. Working
the other way, you're sure to pick *some* pixel for every destination (even
if you just end up copying one of the two source pixels into the "in between"
dest pixel, that's still better than a black spot ;)
Proper handling of clipping of corners (and filling missing source pixels)
when you're rotating 51.8 degrees is left as an exersize for the student ;)
--
Valdis Kletnieks
Computer Systems Senior Engineer
Virginia Tech
msg11513/pgp00000.pgp
Description: PGP signature
