2016-05-20 135 views
-2

我正在創建一個縮放功能,目前爲止它的工作原理,但現在我有一個新的問題,我使用噸的if語句來更改gScaled。我希望將這些if語句合併爲儘可能少的語句,以便稍後將更小的增量添加到縮放中,而無需另外編寫100個if語句。需要幫助,結合gScaled if語句

代碼:

if(zoom == 1){ 
     glScaled(1.1, 1.1, 1.1); 
    } 
    if(zoom == 2){ 
     glScaled(1.2, 1.2, 1.2); 
    } 
    if(zoom == 3){ 
     glScaled(1.3, 1.3, 1.3); 
    } 
    if(zoom == 4){ 
     glScaled(1.4, 1.4, 1.4); 
    } 
    if(zoom == 5){ 
     glScaled(1.5, 1.5, 1.5); 
    } 
    if(zoom == 6){ 
     glScaled(1.6, 1.6, 1.6); 
    } 
    if(zoom == 7){ 
     glScaled(1.7, 1.7, 1.7); 
    } 
    if(zoom == 8){ 
     glScaled(1.8, 1.8, 1.8); 
    } 
    if(zoom == 9){ 
     glScaled(1.9, 1.9, 1.9); 
    } 
    if(zoom == 10){ 
     glScaled(2.0, 2.0, 2.0); 
    } 
    if(zoom == -1){ 
     glScaled(0.9, 0.9, 0.9); 
    } 
    if(zoom == -2){ 
     glScaled(0.8, 0.8, 0.8); 
    } 
    if(zoom == -3){ 
     glScaled(0.7, 0.7, 0.7); 
    } 
    if(zoom == -4){ 
     glScaled(0.7, 0.7, 0.7); 
    } 
    if(zoom == -5){ 
     glScaled(0.6, 0.6, 0.6); 
    } 
    if(zoom == -6){ 
     glScaled(0.5, 0.5, 0.5); 
    } 
    if(zoom == -7){ 
     glScaled(0.4, 0.4, 0.4); 
    } 
    if(zoom == -8){ 
     glScaled(0.3, 0.3, 0.3); 
    } 
    if(zoom == -9){ 
     glScaled(0.2, 0.2, 0.2); 
    } 
    if(zoom == -10){ 
     glScaled(0.1, 0.1, 0.1); 
    } 

我試圖與我自己更換雙打(IE gScaled(X,Y,Z)),然後添加至那些(X + = 0.1; Y + = 0.1; z + = 0.1;)它可以工作,但我不知道如何使它停止。

+1

也發佈替換代碼。 –

+0

你有沒有聽說過switch語句? –

+1

@NicolBolas:爲什麼連開關都打擾?這是基本的藝術算術。 – datenwolf

回答

4

呃,爲什麼不簡單計算呢?

double const f_zoom = 1.0 + 0.1 * zoom; 
glScaled(f_zoom, f_zoom, f_zoom); 

除了避免大量的重複代碼,還可以防止愚蠢的錯誤,因爲這一個,你在你的代碼有:

/* ... */ 
if(zoom == -3){ 
    glScaled(0.7, 0.7, 0.7); 
} 
if(zoom == -4){ 
    glScaled(0.7, 0.7, 0.7); 
} 
/* ... */ 

你看到了嗎?對於-3和-4,縮放因子已被編碼爲0.7。這當然不是你想要的。