C++部分并不是计算机图形学的知识,而是C++使用线性代数知识来显示一些酷炫的3D画面。你不必深究其中是否是严格的计算机图形学知识。如果你想学习计算机图形学知识可以看文件夹injs中的内容,采用html javascript canvas实现。
这不是计算机图形学项目,这不是计算机图形学项目,这不是计算机图形学项目,这只是一个有趣的demo,让你发现线性代数的有趣。
如果你没学过计算机图形学,同时你是一个程序员或是一名计算机相关专业的学生正在学习线性代数,你可以先去学习 MIT W.Gilbert Strang老爷子的线性代数课程,学到基变换时过来看看这些C++代码,你就会感觉很有意思。
没学过计算机图形学、图像处理课程的菜鸡最近在总结线性代数、突然脑子一热代码上头了 、线代的魅力太精彩了。
如果能够理解下面的大致过程一定会会对线性变换、基变换、以及可能我们听说过的图像坐标系、世界坐标系、摄像机坐标系。
这不仅仅在某个方向涉及这些,例如机器人视觉定位SLAM以及3D动画、游戏开发都会与这些密切相关,以前我也接触过RoboMaster的机器人视觉开发、做过图像处理,
但这是我的一个尝试,如果你有兴趣的话可以尝试一下,我想会非常有趣,这里并没有选择专业的渲染工具,如OpenGL、以及图像处理的OpenCV,我想用一个简单的例子理解较多的知识是最重要的。
在此我们使用EasyX与Eigen3 ,有人说为什么不去学OpenGL、我只能说术业有专攻我从没接触过它,我用简单的实现原理来帮助我理解线性代数、而非为了渲染效率工程专业性上考虑。
1、物体旋转
2、自定义模型
3、使用 Q A W S E D 平移
4、使用 R F T G Y H 旋转
git clone https://hub.fastgit.xyz/gaowanlu/3dll.git或在Github https://github/gaowanlu/3dll、获取最新的工程效果
请使用Visual Studio 2022 打开项目 ,或者自己使用其他IDE进行构建
环境搭建打开sln文件
请使用Visual Studio 2022 打开项目 ,或者自己使用其他IDE进行构建
项目 =》属性 =》C/C++ =》常规添加本项目的include文件夹路径到附加包含目录属性
项目 =》属性 =》链接器 =》将本项目的lib/x64文件夹路径添加附加库目录
注意设置上面步骤时,尽量选择 配置:所有配置 平台:x64 Release、以免新手怎么弄都跑不起来
线性代数视频课程链接