Advertisement
KoMeDiAnT

Vector3D

Oct 25th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.66 KB | None | 0 0
  1. package MyGeometryLib;
  2.  
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class Vector3D implements Vector {
  7.  
  8.     //region Field
  9.  
  10.     private double x;
  11.     private double y;
  12.     private double z;
  13.  
  14.     //endregion
  15.  
  16.     Vector3D(double x, double y, double z) {
  17.         this.x = x;
  18.         this.y = y;
  19.         this.z = z;
  20.     }
  21.  
  22.     //region Options
  23.  
  24.     @Override
  25.     public int dimension() {
  26.         String name = Vector3D.class.getSimpleName();
  27.         String dimension = "";
  28.  
  29.         Pattern pattern = Pattern.compile("(\\d)+D");
  30.         Matcher matcher = pattern.matcher(name);
  31.  
  32.         while (matcher.find()) {
  33.             dimension = name.substring(matcher.start(), matcher.end() - 1);
  34.         }
  35.  
  36.         return Integer.parseInt(dimension);
  37.     }
  38.  
  39.     @Override
  40.     public double getComponent(int i) {
  41.         switch (i) {
  42.             case 0:
  43.                 return x;
  44.             case 1:
  45.                 return y;
  46.             default:
  47.                 return z;
  48.         }
  49.     }
  50.  
  51.     @Override
  52.     public double scalar(Vector vector) {
  53.         return this.x*vector.getComponent(0) +
  54.                 this.y*vector.getComponent(1) +
  55.                 this.z*vector.getComponent(2);
  56.     }
  57.  
  58.     @Override
  59.     public double len() {
  60.         return Math.sqrt(x*x+y*y+z*z);
  61.     }
  62.  
  63.     @Override
  64.     public Vector multiply(double factor) {
  65.         return new Vector3D(
  66.                 this.x*factor,
  67.                 this.y*factor,
  68.                 this.z*factor
  69.         );
  70.     }
  71.  
  72.     @Override
  73.     public Vector add(Vector vector) {
  74.         return new Vector3D(
  75.                 this.x + vector.getComponent(0),
  76.                 this.y + vector.getComponent(1),
  77.                 this.z + vector.getComponent(2)
  78.         );
  79.     }
  80.  
  81.     @Override
  82.     public Vector sub(Vector vector) {
  83.         return new Vector3D(
  84.                 this.x - vector.getComponent(0),
  85.                 this.y - vector.getComponent(1),
  86.                 this.z - vector.getComponent(2)
  87.         );
  88.     }
  89.  
  90.     //endregion
  91.  
  92.     @Override
  93.     public boolean equals(Object obj) {
  94.         //Если сравниваем оди и тот же вектор
  95.         if (obj == this) {
  96.             return true;
  97.         }
  98.  
  99.         //Смотрим что мы сравниваем объекты одного типа и что он не null
  100.         if (obj == null || obj.getClass() != this.getClass()) {
  101.             return false;
  102.         }
  103.  
  104.         Vector3D vector = (Vector3D) obj;
  105.  
  106.         return this.x == vector.getComponent(0) &&
  107.                 this.y == vector.getComponent(1) &&
  108.                 this.z == vector.getComponent(2);
  109.     }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement