我正在创建一个缩放功能,到目前为止它可以工作,但现在我遇到了一个新问题,我使用大量的if语句来改变gScaled。我希望尽可能少地将这些if语句组合起来,以便以后更容易向缩放添加较小的增量,而无需在另外100个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;)这样做工作,但我无法弄清楚如何让它停止。
答案 0 :(得分: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。那肯定不是你想要的。