Advertisement
prupel

Vectors.java (rough)

Jul 4th, 2012
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.07 KB | None | 0 0
  1. public final class Vectors
  2. {
  3.     public static float[] add (float[] v1, float[] v2, float[] dst)
  4.     {
  5.         if (dst == null) dst = new float[3];
  6.        
  7.         for (int i = 0; i < 3; i++) dst[i] = v1[i] + v2[i];
  8.         return dst;
  9.     }
  10.     public static float[] add (float[] v, float s, float[] dst)
  11.     {
  12.         if (dst == null) dst = new float[3];
  13.        
  14.         for (int i = 0; i < 3; i++) dst[i] = v[i] + s;
  15.         return dst;
  16.     }
  17.    
  18.     public static float[] add_r (float[] v1, float[] v2)
  19.     {
  20.         return add(v1, v2, v1);
  21.     }
  22.    
  23.     public static float[] add_r (float[] v, float s)
  24.     {
  25.         return add(v, s, v);
  26.     }
  27.    
  28.     public static float[] sub (float[] v1, float[] v2, float[] dst)
  29.     {
  30.         if (dst == null) dst = new float[3];
  31.        
  32.         for (int i = 0; i < 3; i++) dst[i] = v1[i] - v2[i];
  33.         return dst;
  34.     }
  35.    
  36.     public static float[] sub (float[] v, float s, float[] dst)
  37.     {
  38.         if (dst == null) dst = new float[3];
  39.        
  40.         for (int i = 0; i < 3; i++) dst[i] = v[i] - s;
  41.         return dst;
  42.     }
  43.    
  44.     public static float[] sub_r (float[] v1, float[] v2)
  45.     {
  46.         return sub(v1, v2, v1);
  47.     }
  48.    
  49.     public static float[] sub_r (float[] v, float s)
  50.     {
  51.         return sub(v, s, v);
  52.     }
  53.    
  54.     public static float[] mul (float[] v, float s, float[] dst)
  55.     {
  56.         if (dst == null) dst = new float[3];
  57.        
  58.         for (int i = 0; i < 3; i++) dst[i] = v[i] * s;
  59.         return dst;
  60.     }
  61.    
  62.     public static float[] mul_r (float[] v, float s)
  63.     {
  64.         return mul(v, s, v);
  65.     }
  66.    
  67.     public static float[] div (float[] v, float s, float[] dst)
  68.     {
  69.         for (int i = 0; i < 3; i++) dst[i] = v[i] * s;
  70.         return dst;    
  71.     }
  72.    
  73.     public static float[] div_r (float[] v, float s)
  74.     {
  75.         return div(v, s, v);
  76.     }
  77.    
  78.     public static float[] cross (float[] v1, float[] v2, float[] dst)
  79.     {
  80.         float tx = (v1[1] * v2[2]) - (v1[2] * v2[1]);
  81.         float ty = (v1[2] * v2[0]) - (v1[0] * v2[2]);
  82.         float tz = (v1[0] * v2[1]) - (v1[1] * v2[0]);
  83.        
  84.         if (dst != null) { dst[0] = tx; dst[1] = ty; dst[2] = tz; }
  85.         else dst = new float[] {tx, ty, tz};
  86.        
  87.         return dst;
  88.     }
  89.    
  90.     public static float[] cross_r (float[] v1, float[] v2)
  91.     {
  92.         return cross(v1, v2, v1);
  93.     }
  94.    
  95.     public static float[] inverse (float[] v, float[] dst)
  96.     {
  97.         if (dst == null) dst = new float[3];
  98.  
  99.         for (int i = 0; i < 3; i++) dst[i] = -v[i];
  100.         return dst;
  101.     }
  102.    
  103.     public static float[] inverse_r (float[] v)
  104.     {
  105.         return inverse(v, v);
  106.     }
  107.    
  108.     public static float[] norm (float[] v, float[] dst)
  109.     {
  110.         if (dst == null) dst = new float[3];
  111.        
  112.         float l = Vectors.len(v);
  113.  
  114.         for (int i = 0; i < 3; i++) dst[i] = v[i] / l;
  115.         return dst;
  116.     }
  117.    
  118.     public static float[] norm_r (float[] v)
  119.     {
  120.         return norm(v, v);
  121.     }
  122.    
  123.     public static float dot (float[] v1, float[] v2)
  124.     {
  125.         float dot = 0;
  126.        
  127.         for (int i = 0; i < 3; i++) dot += v1[i] * v2[i];
  128.         return dot;
  129.     }
  130.    
  131.     public static float len (float[] v)
  132.     {
  133.         return (float) Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
  134.     }
  135.    
  136.     public static String toString (float[] v)
  137.     {
  138.         StringBuilder s = new StringBuilder();
  139.         s.append("[ X: ");
  140.         s.append(v[0]);
  141.         s.append(" Y: ");
  142.         s.append(v[1]);
  143.         s.append(" Z: ");
  144.         s.append(v[2]);
  145.         s.append(" ]");
  146.        
  147.         return s.toString();
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement