HustleCoder
@HustleCoder

Почему программа выдает -nan (ind)?

Написал функцию поворота прямой.
// Line - y = _k * x + _b
void Line::rotation(double angle) {
    double temp = _k;
    _k = (_k + tan(angle))/(1 - _k*tan(angle));
    _b *= _k/temp;
}

double Line::rotationAngle(const Line &l) { // counterclock-wise from l to this
    return atan((_k - l._k)/(1. + _k*l._k));
}

При вводе следующих данных
Line Line1(0, 0), Line2(2, 1);

    cout << Line1;
    cout << Line2;

    Line1.rotation(Line2.rotationAngle(Line1));

    cout << Line1;

Почему-то выдает следующее
y = 0x + 0
y = 2x + 1
y = 2x + -nan(ind)

Коэффициент повернутой прямой программа посчитала правильно (_k = 2), но почему-то потом не может поделить 2 на 2:
_b *= _k/temp;
Хотя если temp заменить 2, то все ок. Выдаст: y = 2x + 0
Вроде бы никаких корней и делений на ноль. В чем причина?
  • Вопрос задан
  • 5139 просмотров
Решения вопроса 1
Zoominger
@Zoominger
System Integrator
Вроде бы никаких корней и делений на ноль.


Если тангенс равен 0.5 при коэффициенте 2, то появляется деление на ноль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы