У меня есть несколько точек на двухмерном графике, и я обеспокоен тем, что они лежат в квадранте, а не в реальных координатах. У меня есть функция ReflectX (), которая выполняет «Отражение вдоль оси X» на подмножестве и возвращает обновленный квадрант, в котором теперь лежат точки.
Итак, точки изначально в квадранте 1 теперь будут лежать в 4 и наоборот; аналогично для квадрантов 2 и 3.
Вместо 4 операторов if-else я хочу использовать только 2 для оптимизации. Это может быть сделано? Любые предложения по другим видам оптимизации также приветствуются. Что я сделал до сих пор (что не так много):
int ReflectX(int q[], int x, int y){//x & y provide the range boundaries
int i;
for(i=x-1; i<y; i++){
if(q[i]==1 || q[i]==4) q[i]=(q[i]+3)%6;
else //change 2 into 3 and 3 into 2
}
}
РЕДАКТИРОВАТЬ: я не писал о ReflectY (), потому что я мог сделать это с одним условием if-else. Однако, основываясь на ответе Адама Розенфилда , я решил оптимизировать эту функцию с помощью однострочной формулы и получил:
q[i] = (q[i] - pow(-1, q[i]%2));