Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于几个思路问题(学习习惯与学习方法)

Viewing 2 reply threads
  • Author
    Posts
    • #4023 Score: 0
      6君
      Participant
      1 pt

      从作业0到作业3的学习过程中遇到了一些问题,在这些问题上花费了大量的时间,但这些问题又不是说听课没懂的问题,应该算是学习思路或者是遇到问题解决问题的思路的问题,希望有大神解答一二,谢谢!
      ——————————————————————————————
      1.当大家拿到代码框架的时候是如何理解框架?
      我的思路:拿到一个代码框架,我是先从头文件了解不同有哪些api可以调用以及是什么作用,然后去main中查看有哪些api可以调用以及是什么作用,然后就开始找TODO做题
      ——————————————————————————————
      2.关于Eigen库的api调用问题,遇到一个api可能根本没用过,大家是如何获知这个api的使用方法的?
      我的思路:通过谷歌或者百度,直接搜索Eigen+api,以此来查找相关信息,当然更偏向于Eigen官方文档,但不知道大家什么感觉,我的感觉是Eigen里面直接查找的api总是找不到自己想要找的东西,比如我查Vector3f、norm,它可能只是蹦出个名字,并不会说这个东西怎么用,得不到自己想要的信息
      ——————————————————————————————
      3.这个问题可能跟上面的问题有点相反,就是我想要一个功能的api,想知道Eigen库中有木有,怎么操作?
      我的思路:通过谷歌或者百度,直接搜索Eigen+功能,比如Eigen 向量的模,以此来查找相关信息。
      ——————————————————————————————
      4.可能有时候并不知道有现成的api可以调用,大家是如何知道有哪些api可以调用的?
      1)个人遇到过的问题:在boundingbox的计算中,一开始我是自己写的函数来计算的,内容很多。后来在问问题的时候才得知有MAX方法可以使用,一下代码量就变少了。
      2)上面是一种情况,这种情况可能是查看代码框架不仔细的原因。这里还有一种情况:就是说Eigen库有的方法可以使用的现成api,却并不知道。比如:cwisePruduct,norm这些等等
      ——————————————————————————————
      5.当大家编译报错时,是如何定位问题根源的?
      我的思路:还是搜索报错信息,看看大家怎么说
      ——————————————————————————————
      6.当大家得出的结果与正确的输出结果不匹配时,大家是如何排查问题或者Debug的?

      • This topic was modified 4 years, 2 months ago by 6君. Reason: 添加下划线,方便区分问题
      • This topic was modified 4 years, 2 months ago by 6君.
    • #4037 Score: 0
      五十弦
      Participant

      刚开始接触图形学的萌新说下自己的做法:
      1.这几次作业的框架拿到手后,都是无从下手的感觉,思路有点上课的残留,具体到代码又不知道从何写起,先对着老师给的作业说明pdf去先把说明仔细看几遍,从拿到框架到建立思路这一步往往花的时间最长,遇到不懂还得去看录像补充笔记。理解框架也是先看给的头文件,找到相应的类包含的参数和方法,按作业顺序找到TODO,根据给的提示和注释的代码思考函数的结构,还是下不了手只能去论坛看看大家讨论的问题,然后基本就能慢慢往下写了。先写好,编译能过能出大致结果后再去找到调用了修改的函数的地方,去main等地方脑补一下程序运行的
      流程,再挑说明中提到的重点源码看程序就心里有数了。
      2.Eigen库是初次使用,免不了经常去查Eigen库中对于矩阵和向量的基本操作,百度就能找到别人的一些使用心得,我一般看的别人的总结,基本自己能想到的对矩阵的操作都能找到库中对应的方法。
      3.有一定的c++基础,一般想到的都尽量往自己掌握的api上靠,如果太复杂了会去找找有没有简单的实现。
      4.自己用虚拟机跑vscode的时候如果装扩展就会使vscode变卡,就直接用TexEidit来修改,再用终端调试了,也没有可用的测试框架,只能一遍遍编译,找到报错行仔细分析,效率虽然有点低,读懂错误信息还是能解决问题的,结果不对的话就在自己修改过的地方尽可能打印需要的信息,再查找是哪里的结果不符合预期。
      作业效率虽然低,要2天左右才能做完,但做完后收获确实很大。

    • #4045 Score: 1
      nightwatch
      Participant
      3 pts

      1.当大家拿到代码框架的时候是如何理解框架?
      无它,唯眼熟尔

      2.关于Eigen库的api调用问题,遇到一个api可能根本没用过,大家是如何获知这个api的使用方法的?
      查eigen-quick-reference参考手册

      3.这个问题可能跟上面的问题有点相反,就是我想要一个功能的api,想知道Eigen库中有木有,怎么操作?
      查参考手册
      重点查Martrix和Geometry模块的手册就行了
      或者在stackoverflow搜索

      4. 可能有时候并不知道有现成的api可以调用,大家是如何知道有哪些api可以调用的
      C++标准库中数学有关的库主要是cmath和numeric

      eigen带的功能请看第二点

      5.当大家编译报错时,是如何定位问题根源的
      eigen是模板库,在C++20的concept出来之前编译报错问题暂时得不到改善。
      做作业都是填充几个函数,修改的代码量不多,多观察一般能看出来哪里有错。
      IDE偶尔会给出比较准确的提示,在xx行的模版实例化出错。

      6.当大家得出的结果与正确的输出结果不匹配时,大家是如何排查问题或者Debug的?
      1. 输出到图片,用可以获取鼠标指针下的RGB图片值的图片浏览器,可以帮忙诊断一些问题
      2. 写一点代码就编译一下看一下结果
      3. debugger在图形学的环境下不好用,太慢。建议打log的形式来分析。
      4. 用静态分析工具可以排除一些低级debug
      5. 可视化一些变量,比如法向量可以转为RGB可视化

      This post has received 1 vote up.
      • #4046 Score: 0
        6君
        Participant
        1 pt

        谢谢!一看就是做多了有套路,牛批!

Viewing 2 reply threads
  • You must be logged in to reply to this topic.