Files
Basic3D/README.md

31 lines
2.2 KiB
Markdown
Raw Normal View History

2014-09-07 18:53:47 +08:00
Basic3D
=======
3D Graphics Library (Basic Classes) for learning
2014-09-10 09:11:18 +08:00
2014-09-10 09:47:40 +08:00
##Introductions(介绍)
在实际应用中, 构建 3D 场景都会基于比较成熟的图形库, 如[OpenSceneGraph](http://www.openscenegraph.org/)和[Orge](http://www.ogre3d.org/), 或是为了追求效率直接使用 OpenGL 或是 Direct3D.
但无论用哪一种方案, 都毋需操心最底层的数学计算问题. 因为这些库已经或多或少的封装了一些必备数学运算操作, 尤其是关于线性代数方面的运算操作.
然而, 即使直接使用封装好的API, 有些地方还是会让人费解. 譬如旋转问题, 到底是如何旋转的, 往哪个方向旋转? 我们常常写下了代码, 却无法事先预知那些 3D 图件最终会以什么样的形式呈现. 这个现象很大程度上是因为我们对底层的实现没有一个大致的把握, 故作为使用者, 很难顺着创造者的思路进行开发. 所以, 尝试**阅读源代码**是一个非常必要的习惯.
2014-09-10 09:54:30 +08:00
> 源代码里, 了无秘密
2014-09-10 09:47:40 +08:00
如果尝试阅读过源代码, 会发现这个办法其实门槛很高. 真相就在眼前, 而迷雾却挥之不去. 对于一些数学上的公理, 定律, 源代码不会事无巨细的交代. 没有扎实的数学基础, 恐怕以上种种皆为高屋建瓴. 于是, 我们知道了, 阅读源码之前, 应该先读书.
> [3D数学基础: 图形与游戏开发](http://book.douban.com/subject/1400419/)
([原书介绍](http://gamemath.com/about-the-book/))
此书是一本绝佳的入门书籍, 它在介绍线性代数之际辅之以解释其几何含义, 让一些费解的公式更容易理解. 更令人称赞的是, 此书还结合一些实际代码, 来辅助讲解 3D 底层库中如何具体实现一些常用的计算方法.
2014-09-10 09:54:30 +08:00
我尝试顺着本书的思路, 从底层构建一个简单的 3D 图形计算库, 姑且命名为 Baisc3D. 而单元测试代码(*UTest.cpp)则撷取该书中课后习题作为测试用例, 顺便也验证一下我的答案是否正确. 倒也相得益彰.
注意, 本代码**仅作为学习使用, 不能用于生产环境.**
2014-09-10 09:47:40 +08:00
##Progress(进展)
2014-09-19 08:50:29 +08:00
标量构成了**向量**([B3D::Vec3](https://github.com/pezy/Basic3D/blob/master/Vec3.h)), 向量的线性变换需要**矩阵**.
2014-09-10 09:47:40 +08:00
未完待续.