Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MyGeometryLib;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class Vector3D implements Vector {
- //region Field
- private double x;
- private double y;
- private double z;
- //endregion
- Vector3D(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- //region Options
- @Override
- public int dimension() {
- String name = Vector3D.class.getSimpleName();
- String dimension = "";
- Pattern pattern = Pattern.compile("(\\d)+D");
- Matcher matcher = pattern.matcher(name);
- while (matcher.find()) {
- dimension = name.substring(matcher.start(), matcher.end() - 1);
- }
- return Integer.parseInt(dimension);
- }
- @Override
- public double getComponent(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- default:
- return z;
- }
- }
- @Override
- public double scalar(Vector vector) {
- return this.x*vector.getComponent(0) +
- this.y*vector.getComponent(1) +
- this.z*vector.getComponent(2);
- }
- @Override
- public double len() {
- return Math.sqrt(x*x+y*y+z*z);
- }
- @Override
- public Vector multiply(double factor) {
- return new Vector3D(
- this.x*factor,
- this.y*factor,
- this.z*factor
- );
- }
- @Override
- public Vector add(Vector vector) {
- return new Vector3D(
- this.x + vector.getComponent(0),
- this.y + vector.getComponent(1),
- this.z + vector.getComponent(2)
- );
- }
- @Override
- public Vector sub(Vector vector) {
- return new Vector3D(
- this.x - vector.getComponent(0),
- this.y - vector.getComponent(1),
- this.z - vector.getComponent(2)
- );
- }
- //endregion
- @Override
- public boolean equals(Object obj) {
- //Если сравниваем оди и тот же вектор
- if (obj == this) {
- return true;
- }
- //Смотрим что мы сравниваем объекты одного типа и что он не null
- if (obj == null || obj.getClass() != this.getClass()) {
- return false;
- }
- Vector3D vector = (Vector3D) obj;
- return this.x == vector.getComponent(0) &&
- this.y == vector.getComponent(1) &&
- this.z == vector.getComponent(2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement