Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package classes;
- import classes.Point3D;
- import classes.Vector3D;
- import classes.Vector3DProcessor;
- import java.util.Arrays;
- public class Vector3DArray {
- int size = 0; // поле "кол-во векторов в массиве"
- Vector3D[] data; // поле "сам массив"
- public Vector3DArray(int size) { // конструктор создаёт массив заданного размера и заполняет его нулевыми векторами
- if (size > 0) {
- this.size = size; // изменение поля "кол-во векторов"
- this.data = new Vector3D[size]; // инициализация data как массива векторов с размером size
- for (int i = 0; i < size; i++) {
- this.data[i] = new Vector3D(); // заполнение массива нулевыми векторами
- }
- }
- }
- public void Shift(int i, Vector3D vec){ // подстановка в data вектора vec по индексу i
- if( i >= 0 && i < this.size) {
- this.data[i] = vec;
- }
- }
- public void Show(){ // вывод всего массива на экран
- for (int i = 0; i < this.size; i++){
- System.out.println("Vector[" + i +"] = {" + data[i].toString() + "}");
- }
- }
- public double Length(){
- return this.size;
- } // длина массива
- public double HighestLength(){ // находит самый длинный вектор и возвращает его длину
- double max = data[0].Length();
- for(int i = 1; i < this.size; i++){
- if (max < data[i].Length()) {max = data[i].Length();}
- }
- return max;
- }
- public int FindElem(Vector3D vector){ // находит заданный vector в массиве
- for(int i = 0; i < this.size; i++){
- if(vector.equals(this.data[i])) {return i;}
- }
- return -1;
- }
- public Vector3D SumVect(){ // складывает все вектора в массиве и возвращает вектор
- Vector3D sum = new Vector3D();
- Vector3DProcessor ssum = new Vector3DProcessor();
- for(int i = 0; i < this.size; i++){
- ssum.addition(sum, sum, data[i]);
- }
- return sum;
- }
- public Vector3D linearCombination(double Coeffs[]) { // линейная комбинация всех векторов с массивом коэф-ов
- Vector3D v = new Vector3D();
- if (Coeffs.length != this.size) { // если длина массива с коэф-ми не совпадает с длиной массива векторов
- return v; // возвращаем нулевой вектор
- }
- Vector3DProcessor V3Proc = new Vector3DProcessor();
- for (int i = 0; i < this.size; i++) {
- V3Proc.addition(v, v, new Vector3D(Coeffs[i] * this.data[i].x, Coeffs[i] * this.data[i].y, Coeffs[i] * this.data[i].z));
- } // вычисляет линейную комбинацию векторов с заданными коэффициентами
- return v; // и возвращает её
- }
- public Point3D[] pointShift(Point3D p) {//вычисляет массив точек, каждая из которых – результат сдвига точки P, на соответствующий вектор.
- Point3D[] shiftArr = new Point3D[this.size];
- for (int i = 0; i < this.size; i++) {
- shiftArr[i] = new Point3D(p.x + this.data[i].x, p.y + this.data[i].y, p.z + this.data[i].z);
- }
- return shiftArr;
- }
- // снова всякие проверки
- public static void main(String args[]){
- Vector3DArray ArrayOfVec = new Vector3DArray(6);
- Vector3D Vec = new Vector3D(1, 1, 1);
- Vector3D Vec1 = new Vector3D(2, 2, 2);
- System.out.println("Длина вектора = " + ArrayOfVec.Length());
- ArrayOfVec.Shift(4, Vec);
- ArrayOfVec.Shift(5, Vec1);
- ArrayOfVec.Show();
- System.out.println("Наибольная длина вектора в массиве = " + ArrayOfVec.HighestLength());
- System.out.println("Номер элемента в массиве = " + ArrayOfVec.FindElem(Vec));
- System.out.println("Сумма векторов в массиве = " + ArrayOfVec.SumVect().toString());
- double Coeffs[] = {1, 2, 3, 4, 5, 6};
- Vector3D linearCombination = ArrayOfVec.linearCombination(Coeffs);
- System.out.println("Линейная комбинация: " + "x = " + linearCombination.x + " y = " + linearCombination.y + " z = " + linearCombination.z);
- Point3D point = new Point3D(1, 1, 1);
- Point3D shift[] = ArrayOfVec.pointShift(point);
- for(int i = 0; i < shift.length; i++) {
- System.out.println("Shift[" +i + "]: x = " + shift[i].getX() + ", y = " + shift[i].getY() + ", z = " + shift[i].getZ());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment