tuxmartin

3D blbosti...

Nov 29th, 2012
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.69 KB | None | 0 0
  1. import java.awt.image.BufferedImage;
  2.  
  3. import transforms3D.Mat4;
  4. import transforms3D.Mat4Identity;
  5. import transforms3D.Mat4PerspRH;
  6. import transforms3D.Mat4ViewRH;
  7. import transforms3D.Point3D;
  8. import transforms3D.Vec3D;
  9.  
  10.  
  11. public class RendererGPU {
  12.     private Mat4 model;
  13.     private Mat4 view;
  14.     private Mat4 persp; // mohla by byt i Mat4PerspRH, ale diky dedicnosti pouzijeme Mat4 a tim je pak mozne pouzit i jinou transformaci
  15.    
  16.     private BufferedImage img;
  17.    
  18.  
  19.     public RendererGPU(BufferedImage img) {    
  20.         Vec3D e = new Vec3D(0, 0, 10);
  21.         Vec3D v = new Vec3D(0, 0, -1);
  22.         Vec3D u = new Vec3D(0, 1,  0);
  23.        
  24.         this.img = img;
  25.         model = new Mat4Identity();
  26.         view = new Mat4ViewRH(e, v, u);
  27.        
  28.         float k = img.getWidth() / (float) img.getHeight();
  29.         persp = new Mat4PerspRH(Math.PI/2, k, 0.1, 100);
  30.             // Mat4PerspRH(zorny uhel, pomer sirka/vyska okna, blizke z, vzdalene z);
  31.             // vzdy pri deleni zkousmat definicni obor!!!!!
  32.             // 180°je rybi oko - cely prostor polokoule, ale hodne deformuje objem
  33.             // Math.PI/2 je 90°lze zapsat Math.toRadians();
  34.        
  35.     }
  36.    
  37.     public void drawLine(Point3D p1, Point3D p2) {
  38.         Vec3D a;
  39.         Vec3D b;       
  40.        
  41.         p1 = p1.mul(model);
  42.         p2 = p2.mul(model);
  43.         // p1 = p1.mul(model).mul(view); // jednodussi zapis
  44.        
  45.         p1 = p1.mul(view);
  46.         p2 = p2.mul(view);
  47.        
  48.         p1 = p1.mul(persp);
  49.         p2 = p2.mul(persp);    
  50.        
  51.         // dehomogenizace:
  52.         a = p1.dehomog();
  53.         b = p2.dehomog();
  54.        
  55.         a = a.mul(new Vec3D(1, -1, 1)); // oteceni y - uz neni nahoru, ale dolu
  56.         a = a.add(new Vec3D(1, 1, 0));
  57.         a.x = a.x * (img.getWidth() - 1);
  58.         a.y = a.y * (img.getHeight() - 1);
  59.        
  60.        
  61.        
  62.         img.getGraphics().drawLine(0, 0, img.getWidth()-1, img.getHeight()-1);
  63.        
  64.     }
  65.    
  66.    
  67.    
  68. }
Advertisement
Add Comment
Please, Sign In to add comment