Advertisement
Guest User

Untitled

a guest
Aug 12th, 2015
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package raytrace;
  2.  
  3. import processing.core.PApplet;
  4.  
  5.  
  6. public class Raytrace extends PApplet {
  7.     public static void main(String[] args) {
  8.     }
  9.  
  10.     double yaw = Math.PI*-0.25;
  11.     double pitch = Math.PI*-0.1875;
  12.     double x;
  13.     double y;
  14.     double z;
  15.     double d;
  16.     int screenX;
  17.     int screenY;
  18.     int shade;
  19.     int cont = 0;
  20.     double distance;
  21.     double xv;
  22.     double yv;
  23.     double zv;
  24.     int frames = 0;
  25.     double trueYaw = Math.PI*0.1;
  26.     double truePitch = Math.PI*0.5;
  27.     double collisionAccuracy = 0.1;
  28.     int oldY;
  29.     //boolean isTouching;
  30.     int r;
  31.     int g;
  32.     int b;
  33.     double plus = 0;
  34.     int shadowY;
  35.  
  36.     public boolean check(double X, double Y, double Z) {
  37.         //isTouching = false;
  38.         r= 0;
  39.         g = 0;
  40.         b = 0;
  41.         //System.out.println(Y);
  42.         if (Z > 20 && Z < 30 && X > -5 && X < 5 && Y > -5 && Y < 5) {
  43.             //System.out.println("blue");
  44.             r = 0;
  45.             g = 0;
  46.             b = 1;
  47.             //System.out.println("true");
  48.             return true;
  49.         }
  50.         //System.out.println(Y);
  51.         if (Y < -50) {
  52.             //System.out.println("red");
  53.             r = 1;
  54.             g = 0;
  55.             b = 0;
  56.             return true;
  57.         }
  58.         return false;
  59.         /* if ((Math.sqrt(Math.sin(yaw)*Math.sin(yaw)+Math.sin(pitch)*Math.sin(pitch)+Math.cos(yaw)-20*Math.cos(yaw+Math.sin(pitch)-20*Math.cos(yaw+Math.sin(pitch))))) < 5) {
  60.             //System.out.println("green");
  61.             r = 0;
  62.             g = 1;
  63.             b = 0;
  64.             isTouching = true;
  65.          */
  66.     }
  67.  
  68.  
  69.     public void cast(double YAW, double PITCH) {
  70.         //yaw = 0;
  71.         //pitch = 0;
  72.         //speed = speed + 1;
  73.         //System.out.println(speed);
  74.         cont = 0;
  75.         x = -5;
  76.         y = 15;
  77.         z = 25;
  78.         //System.out.println(Math.sqrt(Math.sin(yaw)*Math.sin(yaw)+Math.sin(pitch)*Math.sin(pitch)+Math.cos(yaw)*Math.cos(yaw+Math.sin(pitch)*Math.cos(yaw+Math.sin(pitch)))));
  79.         /*
  80.         xv = (Math.sin(YAW)*collisionAccuracy);
  81.         yv = (Math.sin(PITCH)*collisionAccuracy*(Math.cos(YAW-Math.PI*trueYaw)));
  82.         zv = (Math.cos(YAW)*collisionAccuracy);
  83.          */
  84.  
  85.         xv = (Math.sin(YAW)*collisionAccuracy)*Math.cos(PITCH);
  86.         yv = (Math.sin(PITCH)*collisionAccuracy);
  87.         zv = (Math.cos(YAW)*collisionAccuracy)*Math.cos(PITCH);
  88.         distance = 0;
  89.         do {
  90.             x = x + xv;
  91.             y = y + yv;
  92.             z = z + zv;
  93.             distance = distance + collisionAccuracy;
  94.             //System.out.println("x " + x + "y " + y + "z " + z);
  95.             ;
  96.             if (check(x, y, z)) {
  97.                 oldY = (int)y;
  98.                 cont = 1;
  99.                 shadowY = 500;
  100.                 do {
  101.                     shadowY = shadowY - 1;
  102.                 } while (!check(x, shadowY, z));
  103.                 if ((oldY-1) < shadowY && (oldY+1) > shadowY ) {
  104.                     fill (r*255,g*255,b*255);
  105.                 }else{
  106.                     fill (r*100,g*100,b*100);
  107.                 }
  108.  
  109.                 //cont = 1;
  110.                 //System.out.println("DETECTED CUBE");
  111.             }
  112.             if (distance > 200 && cont == 0) {
  113.                 fill (0, 0, 0);
  114.                 cont = 1;
  115.  
  116.             }
  117.         } while (cont == 0);
  118.  
  119.     }  
  120.  
  121.  
  122.  
  123.     public void setup() {
  124.         size(1200,900);
  125.         screenX = 0;
  126.         screenY = 0;
  127.     }
  128.     public void draw() {
  129.         background(255);
  130.         noStroke();
  131.         screenX = 0;
  132.         screenY = 900;
  133.         pitch = Math.PI*-0.1875+Math.PI*truePitch;
  134.         yaw = Math.PI*-0.25+Math.PI*trueYaw;
  135.         //plus = plus + 0.1;
  136.         //yaw = yaw + plus;
  137.         do {
  138.             do {
  139.                 yaw = yaw + ((Math.PI*0.5)/1200);
  140.                 //System.out.println("screenX" + screenX);
  141.                 screenX = screenX + 1;
  142.                 cast(yaw, pitch);
  143.                 rect(screenX,screenY,1,1);
  144.             } while(screenX < 1200);
  145.             //System.out.println("screenY" + screenY);
  146.             screenY = screenY - 1;
  147.             pitch = pitch + ((Math.PI*0.375)/900);
  148.             yaw = Math.PI*-0.25+Math.PI*trueYaw + plus;
  149.             screenX = 0;
  150.             cast(yaw, pitch);
  151.             rect(screenX,screenY,1,1);
  152.         } while(screenY > 0);
  153.         frames = frames + 1;
  154.         System.out.println(frames);
  155.     }
  156. }
  157.  
  158.  
  159.  
  160.  
  161. //Math.PI*0.25 Math.PI*0.1875
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement