Можно ли менять логический оператор в зависимости от переменной?

Есть вот такое выражение:
if (x_direction > 0)
{
    if (f_pos.x > R)
    rot_direction2 = false;
}
else
{
    if (f_pos.x < -R)
    rot_direction2 = false;
}

При этом значение переменной x_direction может быть только 1 или -1. Очень хочется сократить всё это в одно условие. Уже можно дописать R*x_direction, только вот знак > тоже должен поменяться на <, но я не понимаю, как это сделать. То есть хочется написать что-то типа <*x_direction, но, понятное дело, так делать нельзя. Как-то через алгебру-логику тоже не получается, есть вообще какие-то варианты всё это условие записать в одно? Просто вот это выглядит как-то не очень.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
if (f_pos.x * x_direction > R) {
    rot_direction2 = false;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Ну как минимум это можно объединить в один if с сложным условием:
if ((x_direction > 0 && f_pos.x > R) || (x_direction < 0 && f_pos.x < -R))

Можно математически еще затащить ;-)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы