魔鬼存于细节

        在中国,有很多诸如“涓涓细流,汇成大海”、“小不忍则乱大谋”、“一屋不扫,何以扫天下”、“不积硅步,无以至千里”、“千里之堤,溃于蚁穴”等强调细节之重要性的话。那些看起来很“细”和“小”的东西足以让人们“成大事”也可以“乱大谋”。

        杰克·韦尔奇认为:“没有什么细节会因其细小而不值得你去挥汗,也没有什么大事大到尽了力还不能办到。”人生哲学如此,编程哲学亦如此。

        临近毕业,下半年也有着落,关于图形学方面的毕业设计程序也就成为头等大事。

        如下函数就是程序中所用到的读文件函数,其中Bunny.obj是待读文件,主要内容是点的坐标以及构成面的三个点的序号。

void readfile(void)
{
        FILE *stream;
        char cVorF;
        float tempx, tempy, tempz;
        int ta, tb,  tc;

         if ((stream = fopen("Bunny.obj", "r")) == NULL)
         {
                 printf("cannot open this file/n");
                 return;
         }

         cVorF = fgetc(stream);
         while (cVorF != EOF)
         {
               if (cVorF == 'v')
                {
                        fscanf(stream, "%f %f %f/n", &tempx, &tempy, &tempz);
                        point[nVertices].x = tempx ;
                        point[nVertices].y = tempy ;
                        point[nVertices].z = tempz ;

                        nVertices++;  
               }
               else if(cVorF == 'f')
               {
                        fscanf(stream, "%d %d %d/n", &ta, &tb, &tc);
                        face[nFace].vertex1 = ta - 1;
                        face[nFace].vertex2 = tb - 1;
                        face[nFace].vertex3 = tc - 1;

                       nFace++;
              }
              cVorF = fgetc(stream);
      }

      fclose(stream);
      return;
}
其中,point,face是长度为65535的点结构和面结构数组.
        此函数在一般情况下,绝对是一个很好的程序。但单步跟踪调试程序时,每当运行到fclose(stream);时,系统就弹出访问内存访问非法的类似错误。是何阻止程序继续运行呢?经过和小组其他成员的共同考证,程序无错误,可能是数组长度太小,于是将65535改为70000,再运行程序,果然拨云见日,程序运行达到预期效果。
        这个65535是不是一个小的细节呢?它足以打击你的积极性。

        再来看如下的一个语句:
        absv = sqrt(tvPointx * tvPointx + tvPointy * tvPointy + tvPointz * tvPointz); (1)
   
        这条语句是为了将已计算出的法向量进行单位化的中间步骤。其中tvPointx、tvPointy、tvPointz、absv是如此声明的:
        double tvPointx = 0.0, tvPointy = 0.0, tvPointz = 0.0, absv = 0.0; (2)
        语句(1)运行前tvPointx = 0.0066344103646117, tvPointy = -0.0028678808775453, tvPointz = 0.00093772149065785,运行后absv = 1057686143.0000。但如果用计算器将(1)计算出来后,结果会令人吃惊,absv = 0.00728830942618273!为什么会有如此大的差异呢?可以肯定的是计数器出的结果是正确的。那程序是哪出错了呢?苦思冥想下,改了又改,终于是怀疑到了函数sqrt(),将math.h头文件补上,调试,程序达到了预期效果。在这里的头文件是不是一个小事呢?它是否可以让你意志马上消沉呢?

        老子说:“天下大事,必作于易;天下大事,必作于细。”一个人要成气候,除了锻炼帷幄大局,宏观决策和打开思路的能力外,注重小事和细节也同等重要甚至比之更为重要。

       “魔鬼存于细节,细节造就天使。”细节不是小事,若你忽略了它,它便会给你狠狠一击,让你悔不当初。越是专业得人越懂得关注细节,也正是那些细节,造就了最终结果的不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值