Idoor

Vector3DArray with comments

Sep 21st, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. package classes;
  2. import classes.Point3D;
  3. import classes.Vector3D;
  4. import classes.Vector3DProcessor;
  5. import java.util.Arrays;
  6.  
  7. public class Vector3DArray {
  8. int size = 0; // поле "кол-во векторов в массиве"
  9. Vector3D[] data; // поле "сам массив"
  10.  
  11. public Vector3DArray(int size) { // конструктор создаёт массив заданного размера и заполняет его нулевыми векторами
  12. if (size > 0) {
  13. this.size = size; // изменение поля "кол-во векторов"
  14. this.data = new Vector3D[size]; // инициализация data как массива векторов с размером size
  15. for (int i = 0; i < size; i++) {
  16. this.data[i] = new Vector3D(); // заполнение массива нулевыми векторами
  17. }
  18. }
  19. }
  20.  
  21. public void Shift(int i, Vector3D vec){ // подстановка в data вектора vec по индексу i
  22. if( i >= 0 && i < this.size) {
  23. this.data[i] = vec;
  24. }
  25. }
  26.  
  27. public void Show(){ // вывод всего массива на экран
  28. for (int i = 0; i < this.size; i++){
  29. System.out.println("Vector[" + i +"] = {" + data[i].toString() + "}");
  30. }
  31. }
  32.  
  33. public double Length(){
  34. return this.size;
  35. } // длина массива
  36.  
  37. public double HighestLength(){ // находит самый длинный вектор и возвращает его длину
  38. double max = data[0].Length();
  39. for(int i = 1; i < this.size; i++){
  40. if (max < data[i].Length()) {max = data[i].Length();}
  41. }
  42. return max;
  43. }
  44.  
  45. public int FindElem(Vector3D vector){ // находит заданный vector в массиве
  46. for(int i = 0; i < this.size; i++){
  47. if(vector.equals(this.data[i])) {return i;}
  48. }
  49. return -1;
  50. }
  51.  
  52. public Vector3D SumVect(){ // складывает все вектора в массиве и возвращает вектор
  53. Vector3D sum = new Vector3D();
  54. Vector3DProcessor ssum = new Vector3DProcessor();
  55. for(int i = 0; i < this.size; i++){
  56. ssum.addition(sum, sum, data[i]);
  57. }
  58. return sum;
  59. }
  60.  
  61. public Vector3D linearCombination(double Coeffs[]) { // линейная комбинация всех векторов с массивом коэф-ов
  62. Vector3D v = new Vector3D();
  63. if (Coeffs.length != this.size) { // если длина массива с коэф-ми не совпадает с длиной массива векторов
  64. return v; // возвращаем нулевой вектор
  65. }
  66. Vector3DProcessor V3Proc = new Vector3DProcessor();
  67. for (int i = 0; i < this.size; i++) {
  68. V3Proc.addition(v, v, new Vector3D(Coeffs[i] * this.data[i].x, Coeffs[i] * this.data[i].y, Coeffs[i] * this.data[i].z));
  69. } // вычисляет линейную комбинацию векторов с заданными коэффициентами
  70. return v; // и возвращает её
  71. }
  72.  
  73. public Point3D[] pointShift(Point3D p) {//вычисляет массив точек, каждая из которых – результат сдвига точки P, на соответствующий вектор.
  74. Point3D[] shiftArr = new Point3D[this.size];
  75. for (int i = 0; i < this.size; i++) {
  76. shiftArr[i] = new Point3D(p.x + this.data[i].x, p.y + this.data[i].y, p.z + this.data[i].z);
  77. }
  78. return shiftArr;
  79. }
  80.  
  81. // снова всякие проверки
  82.  
  83. public static void main(String args[]){
  84. Vector3DArray ArrayOfVec = new Vector3DArray(6);
  85. Vector3D Vec = new Vector3D(1, 1, 1);
  86. Vector3D Vec1 = new Vector3D(2, 2, 2);
  87. System.out.println("Длина вектора = " + ArrayOfVec.Length());
  88. ArrayOfVec.Shift(4, Vec);
  89. ArrayOfVec.Shift(5, Vec1);
  90. ArrayOfVec.Show();
  91. System.out.println("Наибольная длина вектора в массиве = " + ArrayOfVec.HighestLength());
  92. System.out.println("Номер элемента в массиве = " + ArrayOfVec.FindElem(Vec));
  93. System.out.println("Сумма векторов в массиве = " + ArrayOfVec.SumVect().toString());
  94. double Coeffs[] = {1, 2, 3, 4, 5, 6};
  95. Vector3D linearCombination = ArrayOfVec.linearCombination(Coeffs);
  96. System.out.println("Линейная комбинация: " + "x = " + linearCombination.x + " y = " + linearCombination.y + " z = " + linearCombination.z);
  97. Point3D point = new Point3D(1, 1, 1);
  98. Point3D shift[] = ArrayOfVec.pointShift(point);
  99. for(int i = 0; i < shift.length; i++) {
  100. System.out.println("Shift[" +i + "]: x = " + shift[i].getX() + ", y = " + shift[i].getY() + ", z = " + shift[i].getZ());
  101. }
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment