1
我在2D圖上有許多點,我關心它們位於的象限比實際座標本身。我有一個函數ReflectX(),它在子集上執行「沿X軸反射」,並返回點的更新象限。 因此,第1象限中的點現在位於4,反之亦然;對於象限2和3也是如此。 我不想使用4個if-else語句,而只是使用2來進行優化。可以這樣做嗎?任何其他類型的優化建議也是受歡迎的。我至今(這心不是很多)來完成:在x軸上反射點後獲得象限值
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條件去做。然而,基於Adam Rosenfield的答案,我決定用一個班輪公式來優化該功能,並得到:
q[i] = (q[i] - pow(-1, q[i]%2));
沒錯方式簡單!謝謝。 – Omochikairi