2016-05-20 137 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。这当然不是你想要的。