home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / graphics / 13027 < prev    next >
Encoding:
Text File  |  1992-12-18  |  2.5 KB  |  75 lines

  1. Newsgroups: comp.graphics
  2. Path: sparky!uunet!ulowell!img.ulowell.edu!aorenste
  3. From: aorenste@cs.ulowell.edu (Aaron Orenstein)
  4. Subject: Re: Simple 3D wireframe rendering method?
  5. Message-ID: <BzFDqs.ED6@ulowell.ulowell.edu>
  6. Sender: usenet@ulowell.ulowell.edu (News manager - ulowell)
  7. Organization: Interactive Media Group - University of Massachusetts at Lowell
  8. References:  <jsm1.724536721@crux1.cit.cornell.edu>
  9. Date: Thu, 17 Dec 1992 22:42:28 GMT
  10. Lines: 63
  11.  
  12. In article <jsm1.724536721@crux1.cit.cornell.edu>, jsm1@crux3.cit.cornell.edu (Solitude Standing) writes:
  13. -> I am looking for formulae to render a three-dimensional wireframe model
  14. -> onto a three dimensional screen, with a given rotation about any axis.
  15. -> Basically I am just looking for the conversion method 3D -> 2D.  No
  16. -> complicated things like hidden surface removal or polygons.  Any help
  17. -> anyone could provide would be great!  Thanks.
  18. -> 
  19. -> 
  20. -> --
  21. -> Jason Scott MacDonald                    jsm1@crux2.cit.cornell.edu
  22. -> "Technology sufficiently advanced is indistinguishable from magic."
  23. ->                                             - Arthur Charles Clarke
  24. -> END OF LINE
  25.  
  26. Rotating points is really quitesimple...
  27. (From Fundamentals of Interactive Computer Graphics by Foley & Van Damn...)
  28.  
  29. For every point:
  30. Treat the point as a matrix [X Y Z W] where W is 1.
  31.  
  32. To rotate around the Z axis, multiply by the matrix:
  33.         |    cos A    sin A     0    0    |
  34.         |    -sin A    cos A    0    0    |
  35.         |    0    0    1    0    |
  36.         |    0    0    0    1    |
  37.  
  38. (A is the Angle of Rotation)
  39. (The vertical bars are a sorry way of representing the matrix)
  40. To rotate around the X axis, multiply by the matrix:
  41.         |    1    0    0    0    |
  42.         |    0    cos A    sin A    0    |
  43.         |    0    -sin A    cos A    0    |
  44.         |    0    0    0    1    |
  45.  
  46. To rotate around the Y axis, multiply by the matrix:
  47.         |    cos A    0    -sin A    0    |
  48.         |    0    1    0    0    |
  49.         |    sin A    0    cos A    0    |
  50.         |    0    0    0    1    |
  51.  
  52.  
  53. Now,  Once you have your rotated points, use the following equation to convert
  54. it to 2d:
  55.  
  56.     I = XD/(Z/Q)    J = YD/(Z/Q)
  57.  
  58.     Where:
  59.         I is the x-coordinate (-F <-> F)
  60.         J is the y-coordinate (-F <-> F)
  61.         D is an arbitrary scaling factor (you pick it)    
  62.         Q is the forshortening ratio (you pick it)
  63.         F is an arbitrary bounds (based on your X,Y,Z coords)
  64.  
  65.     You then need to scale and translate the (I,J) points into screen coords
  66.  
  67.      The forshortening ratio represents how "deep" you want the picture.  It
  68. should be between Z and 1.  (If it is Z then your picture will be a parallel view)
  69.  
  70.     - Aaron
  71. -- 
  72. --------------------
  73. "The Code is free, It's the comments that cost a lot..."
  74. Aaron Orenstein    (aorenste@cs.ulowell.edu, 129.63.1.11)
  75.