Мне нужно определить, являются ли два вектора почти равными (похожими). Два вектора одинаковы, если величина их разности векторов меньше указанного допуска (tol) other - другой вектор для сравнения с tol пороговой длины разности векторов (this - other) возвращает true, если длина (this - other) ) меньше, чем tol, в противном случае - false.
Вот мой метод:
public boolean similarTo(Vector2 other, double tol) {
boolean result = false;
double z = this.mag() - other.mag();
if (z < tol) {
result = true;
}
else {
result = false;
}
return result;
}
Однако, похоже, это не работает, так как при запуске теста JUnit я получаю java .lang.AssertionError, больше ничего. Любая помощь будет оценена. Кстати, метод mag () уже написан и работает правильно.
РЕДАКТИРОВАТЬ: Вот тест JUnit:
@Test
public void test15_similarTo() {
double rad = 0.34;
double x = Math.cos(rad);
double y = Math.sin(rad);
Vector2 unit = new Vector2(x, y);
for (int i = -6; i <= 6; i++) {
double tol = Math.pow(10.0, i);
// if we scale unit by maxScale we will be at the limits of similarity
double maxScale = 1.0 + tol;
double scale = Math.nextAfter(maxScale, Double.NEGATIVE_INFINITY);
Vector2 w = new Vector2(scale * x, scale * y);
assertTrue(unit.similarTo(w, tol));
scale = Math.nextAfter(maxScale, Double.POSITIVE_INFINITY);
w = new Vector2(scale * x, scale * y);
assertFalse(unit.similarTo(w, tol));
}
}