Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!usc!ucsd!ames!sun-barr!decwrl!sgi!bruceh@brushwud.sgi.com From: bruceh@brushwud.sgi.com (Bruce R. Holloway) Newsgroups: comp.graphics Subject: Re: Question Message-ID: <45596@sgi.sgi.com> Date: 2 Dec 89 03:02:58 GMT References: <871@ccssrv.UUCP> Sender: bruceh@brushwud.sgi.com Organization: Silicon Graphics, Inc., Mountain View, CA Lines: 33 In article <871@ccssrv.UUCP>, brian@ccssrv.UUCP (Brian Lantz) writes: > > The transformation matrix: > > | cos(a) -sin(b) 0 | > | sin(a) cos(b) 0 | a != b > | 0 0 1 | > > has me mystified. In empirical tests with lines, it rotates through > a different angle depending on the slope of the line. I can see that > that property should be expected after having it pushed in my face, > but I still don't have an intuitive grasp of the full function of > this transform. Can it be constructed as the product of the basic > translate, scale, and rotate transforms? How can one summerize > its characteristics? All answers will be appreciated. For what it's worth, the matrix can be factored as | cos(a) -sin(a) 0| | 1 sin(a)cos(b) - sin(b)cos(a) 0 | = | sin(a) cos(a) 0| * | 0 sin(a)sin(b) + cos(a)cos(b) 0 | | 0 0 1| | 0 0 1 | | cos(a) -sin(a) 0| | 1 sin(a - b) 0 | = | sin(a) cos(a) 0| * | 0 cos(a - b) 0 | | 0 0 1| | 0 0 1 | | cos(a) -sin(a) 0| | 1 tan(a - b) 0 | | 1 0 0 | = | sin(a) cos(a) 0| * | 0 1 0 | * | 0 cos(a - b) 0 |, | 0 0 1| | 0 0 1 | | 0 0 1 | so it is the product of a rotation by angle a, a shear which depends on (a - b), and a minification of y which depends on (a - b). Thus, there is no translation or uniform scaling. Brought to you by Super Global Mega Corp .com