Видеолекция по синтаксису Java.
Поэтапное построение класса, представляющего вектор в n-мерном пространстве.
Реализуемые методы:
-double getLength() - возвращает длину вектора
-String toString() - выводит информацию об экземпляре класса
-void mult(double a) - умножает вектор на a
-void divide(double a) - делит вектор на a
-Vector summ(Vector b) - прибавляет к текущему вектору вектор b и возвращает результирующий
-Vector minus(Vector b) - аналогично последнему, только выполняет вычитание
Часть 1
Часть 2 Часть 3 Часть 4 Часть 5
Пояснения к коду находятся в видеолекции Сначала нужно написать класс, реализующий точку в n-мерном пространстве:
Поэтапное построение класса, представляющего вектор в n-мерном пространстве.
Реализуемые методы:
-double getLength() - возвращает длину вектора
-String toString() - выводит информацию об экземпляре класса
-void mult(double a) - умножает вектор на a
-void divide(double a) - делит вектор на a
-Vector summ(Vector b) - прибавляет к текущему вектору вектор b и возвращает результирующий
-Vector minus(Vector b) - аналогично последнему, только выполняет вычитание
Часть 1
Часть 2 Часть 3 Часть 4 Часть 5
public class Point {
public static final int MAX_DIMENTIONS=100;
private int dimentions;
private double[] coordinates=new double[MAX_DIMENTIONS];
public Point(int dims, double[] coordinates) {
dimentions=dims;
for (int i=0;i<dims;i++) {
this.coordinates[i]=coordinates[i];
}
}
public double getCoordinate(int index) {
return coordinates[index];
}
public void setCoordinate(int index, double value) {
coordinates[index]=value;
}
public String toString() {
String res="(";
for (int i=0;i<dimentions;i++) {
res+=" "+getCoordinate(i)+" ";
if(i!=dimentions-1) {
res+=";";
}
}
res+=")";
return res;
}
}
Класс Vector:
public class Vector {
private Point begin;
private Point end;
private int dimentions;
public Vector(int dims, double[] coordinatesOfBegin, double[] coordinatesOfEnd) {
begin=new Point(dims, coordinatesOfBegin);
end=new Point(dims, coordinatesOfEnd);
dimentions=dims;
}
public double getLength() {
double summ=0;
for (int i=0;i<dimentions;i++) {
summ+=(end.getCoordinate(i)-begin.getCoordinate(i))*(end.getCoordinate(i)-begin.getCoordinate(i));
}
summ=Math.sqrt(summ);
return summ;
}
public void mult(double a) {
for (int i=0;i<dimentions;i++) {
double newValue=begin.getCoordinate(i)+a*(end.getCoordinate(i)-begin.getCoordinate(i));
end.setCoordinate(i, newValue);
}
}
public void divide(double a) {
mult(1/a);
}
public String toString() {
String res=begin.toString()+" "+end.toString();
return res;
}
public Vector summ(Vector b) {
double[] beginCoordinates=new double[Point.MAX_DIMENTIONS];
double[] endCoordinates=new double[Point.MAX_DIMENTIONS];
Vector res=new Vector(dimentions, beginCoordinates, endCoordinates);
for (int i=0;i<dimentions;i++) {
res.begin.setCoordinate(i, this.begin.getCoordinate(i));
res.end.setCoordinate(i, this.end.getCoordinate(i)+b.end.getCoordinate(i)-b.begin.getCoordinate(i));
}
return res;
}
public Vector minus(Vector b) {
b.mult(-1);
return this.summ(b);
}
}
Комментариев нет:
Отправить комментарий