Круг квадранта и несколько логических операторов - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь вычислить круг с углами и треугольником внутри.

Можно ли группировать логические операторы или не рекомендуется.

EX: Если угол находится в квадранте 1 окружности (> 315 градусов, но не менее 45 градусов) или в квадранте 3 (> 135 градусов, но меньше, чем <= 225 градусов). </p>

Мой основной код работает на:

if (angle > 315 && angle <= 45)
{
    //do codeA
}
else if (angle > 135 && angle <= 225)
{
    //do codeA
}

и т.д.

Что я хочу сделать, это:

if ((angle > 315 && angle <= 45) || (angle > 135 && angle <= 225)
{
    //do codeA
}
else if ((angle > 45 && <= 135) || (angle > 225 && angle <= 315)
{
    //do codeB
}

Я думаю вместо того, чтобы смотреть на оператора переключателя, так как я их сильно недооценивал.

Мои два вопроса:

  1. Независимо от того, является ли это наилучшим способом, можно ли сгруппировать логические операторы так, как я хочу (if ((A == 1 && B == 1) || (A == 2 && B == 4))?

  2. Будет ли оператор switch правильным способом сделать это?

1 Ответ

0 голосов
/ 03 декабря 2011

Традиционно

  1. 1-й квадрант 0-90
  2. 2-й квадрант 90-180
  3. 3-й квадрант 180-270
  4. 4-й квадрант 270-360.

Так что, если A - это угол, когда выразделив его на 180 , вы получите остаток 0-90, когда находитесь в первом или третьем квадранте.

Таким образом, вы можете просто использовать оператор по модулю, чтобы упростить ваше условие.

if (  (A % 180) < 90 )
{
  //first or third quad
}
else
{
  //second or fourth quad
}

Пожалуйста, настройте его на свои диапазоны углов и граничные условия

Вы не можете использовать оператор переключения здесь, потому что вы используете сравнение неравенства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...