Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!purdue!decwrl!shelby!lindy!news From: MA.JOE@forsythe.stanford.edu (Joe Bayus) Newsgroups: comp.graphics Subject: ERRORS IN ROTATIONS Message-ID: <6841@lindy.Stanford.EDU> Date: 3 Jan 90 19:03:28 GMT Sender: news@lindy.Stanford.EDU (News Service) Lines: 51 REGARDING: peterl@ibmpcug.co.uk (Peter Leaback) Errors in rotations Peter, here are some comments, from an admitted novice in the field: 1. Might try displaying at less resolution - then 500/1000 reconstruct might not be visible, as errors are below level of resolution. (might be possible to increase size of matrix cells from 16-bit to 24 ????). 2. Might try calculating rate of distortion & when it becomes visible (via tracing and sampling) (e.g., every n rotations). Then, re- construct every n-1 rotations ( this is really a variation of 1., above). 3. Might also take distortion into account, designing reduced- perspective (object farther away) occurrences to coincide with object movements, and reconstructing when jumps might be credible ("hyperspace" leaps, for example). This might be cute, but doesn't really solve your problem, does it? 4. Might try maintaining a "read-only" copy of the matrix, to which cumulative rotation calculations are applied to produce the displayed image (as an oversimplified example, 5 object rotations are done currently as follows: Mat 1 -> rotation1 -> Mat 2 -> display Mat 2 -> rotation2 -> Mat 3 -> display Mat 3 -> rotation3 -> Mat 4 -> display Mat 4 -> rotation4 -> Mat 5 -> display Mat 5 -> rotation5 -> Mat 6 -> display Instead, you might try something like: "read-only" Mat -> rot1 -> display Mat -> display "read-only" Mat -> rot1 + rot2 -> display Mat -> display etc., Probably you would then have to "refresh" the read-only Mat to be equal to the display Mat every so often, so that the number of "rotN + rot(N+1)" items can be "started over", to prevent "animation slow-down" . This should reduce the distortion errors to accumulate only at the "refresh" rate. You'd have to play with this, I think, to tune for optimum speed vs image-integrity. If the rotation formulae are functional (e.g., logarithmic, hyperbolic, parabolic, etc.), you may not have to actually add "rotN" items, instead pulling them iteratively from a function table - you MIGHT(?) be able to do this anyway, if you know all the moves that will be made (good luck for a billion-move game!!) and you have LOTS of memory to play with and a good algorithm for placing entries in the table. Hope this is useful...these are novitiate comments by all accounts !!